csharp程序编码规则


规范目的
软件的生命周期,80%的花费在于维护
没有软件在其整个生命周期中由最初的开发人员维护
编码规范改善软件的可读性,程序员快而彻底理解代码,
统一编码规范,应用程序的结构和编码风格标准化,便于阅读和理解代码
好的编码约定使源代码严谨、可读性强 意义清楚
软件开发人员必须遵守编码规范
尽量用接口编程
关键语句一定写注释
局部变量随用随声名
少用goto语句
参数多 就用结构
避免对大段代码用try...catch
同一文件避免多个类
字符串多变时用StringBuilder
if语句块用{}
switch语句一定写default
程序命名法
Pascal命名法
单词首字母大写 其他字母小写
如 User  Getinfo
Camel 命名法
除了第一个单词 所有单词首字母大写 其他小写

程序元素命名法
项目名 公司域名 + 产品名
如 facesoho.ERP 或 ERP
命名空间名
公司名/产品名
如ERP
接口命名
大写I开头
类命名
功能与操作结合
如 User Car
方法名
动宾关系 实现何操作
如 getPath
成员变量
尽可能加前缀 "_"
排版
1.关键词和操作符之间加适当的空格。
2.相对独立的程序块与块之间加空行
3.较长的语句、表达式等要分成多行
4.划分出的新行要进行适应的缩进,使排版整齐,语句可读
5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首
6.循环判断等长的表达式或语句,要进行适应的划分
7.若函数或过程中的参数较长,要进行划分。
8.一行只写一条语句
9.函数或过程的开始、结构的定义及循环、判断等代码都要采用缩进风格
10.大括号{ 和 }界定一段程序块 应各独占一行且位于同一列,与引用它们的语句左对齐
在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、 switch、case语句中的程序
都要采用如上的缩进方式
为了防止在阅读代码时不得不滚动源代码编辑器,每行代码或注释在1024*800的显示频率下不得超过一显示屏
当一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。
每一行上放置的语句避免超过一条。
在大多数运算符之前和之后使用空格,这样做时不会改变代码的意图却可以使代码容易阅读。
将大的复杂代码节分为较小的、易于理解的模块。
SQL关键字使用全部大写,对于数据库元素(如表、列和视图)使用大小写混合。
将每个主要的 SQL 子句放在不同的行上,这样更容易阅读和编辑语句,
SELECT FirstName, LastName
FROM Customers
WHERE State = 'WA'
注释(Comment)规范
注释规范包括:模块(类)注释规范、类的属性、方法注释规范、代码间注释
类注释规范
模块开始以以下形式书写模块注释:
///<summary>
///模块编号:<模块编号,可以引用系统设计中的模块编号>
///作用:<对此类的描述,可以引用系统设计中的描述>
///作者:作者
///编写日期:<模块创建日期,格式:YYYY-MM-DD>
///</summary>
如果模块有修改,则每次修改必须添加以下注释:
///<summary>
///Log编号:<Log编号,从1开始一次增加>
///修改描述:<对此修改的描述>
///作者:修改者中文名
///修改日期:<模块修改日期,格式:YYYY-MM-DD>
///</summary>
类属性注释规范
在类的属性以以下格式编写属性注释:
/// <summary>
///属性说明
/// </summary>
方法注释规范
在类的方法声明前以以下格式编写注释
/// <summary>
/// 说明:<对该方法的说明>
/// </summary>
/// <param name="<参数名称>"><参数说明></param>
/// <returns>
///<对方法返回值的说明,该说明必须明确说明返回的值代表什么含义>
/// </returns>
代码间注释规范
代码间注释分为单行注释和多行注释:
单行注释:
//<单行注释>
多行注释:

代码中遇到语句块时必须添加注释(if,for,foreach,……),添加的注释必须能够说明此语句块的作用和实现手段(所用算法等等)。

变量(Variable)命名规范
程序文件(*.cs)中的变量命名规则
程序中变量名称 = 变量的前缀 +代表变量含意的英文单词或单词缩写

类模块级的变量请用“m_”作前缀
public class hello
{
    private string m_Name;
    private DateTime m_Date;
}
 类的属性所对应的变量,采用属性名前加“m_”前缀的形式
public class hello
{
    private string m_Name;
    public string Name
    {
        get
        {
            return m_Name;
        }
    }
}

过程级的变量不使用前缀
public class hello
{
    void say()
    {
        string SayWord;
    }
}

过程的参数使用“p_”作为参数
public class hello
{
    void say(string p_SayWord)
    {
    }
}
针对异常捕获过程中的Exception变量命名,在没有冲突的情况下,统一命名为e
如果有冲突的情况下,可以重复e,比如:ee。
try
{
    //your code
    try
    {
        //code
    }
    catch(Exception ee)
    {
        //your code
    }
}
catch(Exception e)
{
    //your code
}

如果捕获异常不需要作任何处理,则不需要定义Exception实例
例:
try
{
    //your code
}
catch( Exception )
{
}
鉴于大多数名称都是通过连接若干单词构造的,请使用大小写混合的格式以简化它们的阅读
即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如 i 或 j
在变量名中使用互补对,如 min/max、begin/end 和 open/close。
不要使用原义数字或原义字符串,如 For i = 1 To 7。而是使用命名常数,如 For i = 1 To NUM_DAYS_IN_WEEK 以便于维护和理解

控件命名规则
控件命名=Web控件缩写前缀  + “_” +变量名
控件
缩写
Label
lbl

TextBox
txt

CheckBox
chk

Button
cmd

ListBox
lst

DropDownList
drp


常量命名规范
常量名应当有意义,格式为 NOUN 或 NOUN_VERB
常量名均为大写,字之间用下划线分隔。
private const bool   WEB_ENABLEPAGECACHE_DEFAULT           = true;
private const int    WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;
private const bool   WEB_ENABLESSL_DEFAULT                 = false;
注:
变量名和常量名最多可以包含 255 个字符
但是,超过 25 到 30 个字符的名称比较笨拙
清楚表达变量或常量的用途 30  字符足够
类Class命名规范
名字能标识事物的特性
名词或名词短语命名类
名字不用缩写,除非它是众所周知的
名字两个或三个单词组成,不应多于三个
在名字所有单词第一个字母大写
IsSuperUser,包含ID的,ID全部大写,如CustomerID
少用缩写
不要使用下划线字符 (_)
public class FileStream
public class Button
public class String

接口Interface命名规范
和类命名规范相同,唯一区别接口在名字前加上 I 前缀
interface IDBCommand;
interface IButton;
方法(Method)命名规范
名字能够标识事物的特性
动词或动名词短语命名类
名字中所有单词第一个字母大写
名字不用缩写,除非是众所周知的
名字有两个或三个单词组成,不应多于三个
少用缩写
不用下划线字符 (_)。
不在方法中重复类的名称
如某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook
而可以将方法命名为 Book.Close
属性(Attribute)命名规范
名字能标识事物的特性
名词或名词短语命名属性
名字中所有单词第一个字母大写
名字不用缩写,除非众所周知
名字有两个或三个单词组成,不多于三个
少用缩写
不用下划线字符_
事件Event命名规范
名字中所有单词第一个字母大写
事件处理程序名称用 EventHandler 后缀
指定两个名为 sender 和 e 的参数。
sender 参数表示引发事件的对象。
sender 参数始终是 object 类型的,即使在可以使用更为特定的类型时也如此。
与事件相关联的状态封装在名为 e 的事件类的实例中。
对 e 参数类型使用适当而特定的事件类.
用 EventArgs 后缀命名事件参数类.
考虑用动词命名事件。例如,命名正确的事件名称包括 Clicked、Painting 和 DroppedDown
使用动名词(动词的“ing”形式)创建表示事件前的概念的事件名称,用过去式表示事件后。
可取消的 Close 事件应当具有 Closing 事件和 Closed 事件
不用 BeforeXxx/AfterXxx 命名模式
不在类型的事件声明上使用前缀或者后缀
用 Close不用 OnClose
对于可以在派生类中重写的事件,应在类型上提供一个受保护的方法(称为 OnXxx)
此方法只应具有事件参数 e,因为发送方总是类型的实例.
public delegate void MouseEventHandler(object sender, MouseEventArgs e);

命名空间(NameSpace)命名规范
命名命名空间时的一般性规则是用公司名称,跟技术名称和可选的功能与设计
CompanyName.TechnologyName[.Feature][.Design]
Microsoft.Media
Microsoft.Media.Design
名字所有单词第一个字母大写,用句点分隔逻辑组件
 Microsoft.Office.PowerPoint 中所示
不为命名空间和类使用相同的名称
不要既提供 Debug 命名空间也提供 Debug 类

C# 编码规范、命名规则
//www.cnblogs.com/zhaoshujie/p/9594688.html
C#程序编码规范 ----转
//www.cnblogs.com/lovesy2413/p/4478738.html