常见的命名规则
- Pascal 规则: 每个单词开头的字母大写(如 TestCounter).
- Camel 规则: 除了第一个单词外的其他单词的开头字母大写. 如. testCounter.
- Upper 规则: 仅用于一两个字符长的常量的缩写命名,超过三个字符长度应该应用Pascal规则
具体规范如下:
1.类命名规则
- 使用Pascal规则
- 类名应该为名词及名词短语,尽可能使用完整的词.
- 不要使用类前缀 - 不要使用下划线字符 ( _ )。
- 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适当的。
- 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。(例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。而 Button 对于从 Control 派生的类也是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长)
2.接口命名规则
- 使用Pascal规则
- 接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (例如IComponent、IEnumberable)
- 使用字符I为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)
3.枚举命名规则
- 使用Pascal规则
- 少用缩写。
- 不要在 Enum 类型名称上使用 Enum 后缀。(在.NET中,枚举和类、结构体是同一层级的概念,类和结构体都不以Class和Struct结尾)
- 对大多数 Enum 类型使用单数名称,但是对作为位域的 Enum 类型使用复数名称。
- 总是将 FlagsAttribute 添加到位域 Enum 类型。(枚举通过添加Flags的特性使得它能够拥有位运算的能力)
4.变量命名
- 使用Camel规则
- 在简单的循环语句中计数器变量使用 i, j, k, l, m, n
- 不推荐使用匈牙利命名法 (不要给成员变量加任何前缀,如、m、s_等,如果想要区分局部变量和成员变量,可以使用this关键字。扩充一下原因:前缀经常是缩写,意义有时不明确,同时手工维护这个前缀还要消耗开发时间,修改变量类型后变量名也要随之更改)
5. 方法命名
- 使用Pascal规则 (c、java等语言中方法使用camel规则)
- 对方法名采用一致的动词/宾语或宾语/动词顺序。例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将宾语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。
- 推荐名称应该为动词或动词短语.例如Save,SaveCustomer,而不要使用CustomerSave
- 不要在方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook,而可以将方法命名为 Book.Close。
6.属性命名
- 使用Pascal规则
- 名称应该为名词及名词短语
- 对于bool型属性或者变量使用Is(is)作为前缀,不要使用Flag后缀,例如应该使用IsDeleted,而不要使用DeleteFlag
7.集合命名
- 使用Pascal规则
- 名称应该为名词及名词短语
- 名称后面追加“Collection”
8.事件命名
- 使用Pascal规则
- event handlers命名使用 EventHandler 后缀.
- 两个参数分别使用 sender 及 e
- 事件参数使用EventArgs 后缀
- 事件命名使用语法时态反映其激发的状态,例如 Changed,Changing.
9.自定义的属性
- 使用Pascal规则
- 以Attribute结尾(例如 public class AuthorAttribute : Attribute)
10.自定义的异常
- 使用Pascal规则
- 以Exception结尾(例如 public class AppException : Exception)