C# 代码大小写规范说明
作者:Bird鸟人
C# 代码大小写规范
C# 一般采用帕斯卡命名和驼峰命名,.NET类库就是使用这种命名方法, 可见是微软推荐的
PasalCasing
:标识符的第一个单词的字母大写;camelCasing
:标识符的第一个单词的字母小写。
下表描述了不同类型标识符的大小写规则
标识符 | 大小写 | 示例 |
命名空间 | Pascal | namespace Com.Techstar.ProductionCenter |
类型 | Pascal | public class DevsList |
接口 | Pascal | public interface ITableModel |
方法 | Pascal | public void UpdateData() |
属性 | Pascal | Public int Length{…} |
事件 | Pascal | public event EventHandler Changed; |
私有字段 | Camel | private string fieldName; |
非私有字段 | Pascal | public string FieldName; |
枚举值 | Pascal | FileMode{Append} |
参数 | Camel | public void UpdateData(string fieldName) |
局部变量 | Camel | string fieldName; |
这三个标红的是采用驼峰(Camel)命名法
其余的是帕斯卡(pascal)命名法
具体应用的一般良好习惯 | |||
1、 | 成员变量前加前缀 _, 这个也是微软的常用做法 | ||
2、 | 接口的名称加前缀I | ||
3、 | 自定义的属性以Attribute结尾,如: public class AuthorAttribute :Attribute { } | ||
4、 | 自定义的异常以Exception结尾,如: public class AppException: Exception {} | ||
5、 | 方法的命名。一般将其命名为动宾短语,如: ShowDialog() CreateFile() | ||
6、 | 代码的缩进。要用Tab,而不要用space. | ||
7、 | 局部变量的名称要有意义。不要用x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n)。 | ||
8、 | 所有的成员变量声明在类的顶端,用一个换行把它和方法分开。 | ||
9、 | 用有意义的名字命名namespace,如:产品名、公司名。 | ||
10、 | 生成和构建一个长的字符串时,一定要使用StringBuilder,而不用string。 | ||
11、 | 始终使用”{ }”包含if下的语句,即使只有一条语句。 | ||
12、 | 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region…#endregion |
C#中的大小写约定
许多命名约定都与标识符的大小写有关。值得注意的是,公共语言运行库 (CLR) 支持区分大小写和不区分大小写的语言。本主题中描述的大小写约定可帮助开发人员理解和使用库。
大小写样式
下列术语描述了标识符的不同大小写形式。
Pascal 大小写
将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。
例如: BackColor
大小写混合
标识符的首字母小写,而每个后面连接的单词的首字母都大写。
例如: backColor
大写
标识符中的所有字母都大写。
例如: IO
标识符的大小写规则
如果标识符由多个单词组成,请不要在各单词之间使用分隔符,如下划线(“_”)或连字符(“-”)等。而应使用大小写来指示每个单词的开头。
下列准则是用于标识符的通用规则。
对于由多个单词组成的所有公共成员、类型及命名空间名称,要使用 Pascal 大小写。
注意,这条规则不适用于实例字段。由于成员设计准则中详细说明的原因,不应使用公共实例字段。
对参数名称使用大小写混合。
下表汇总了标识符的大小写规则,并提供了不同类型标识符的示例。
标识符 | 大小写方式 | 示例 |
---|---|---|
类 | Pascal | AppDomain |
枚举类型 | Pascal | ErrorLevel |
枚举值 | Pascal | FatalError |
事件 | Pascal | ValueChanged |
异常类 | Pascal | WebException |
只读的静态字段 | Pascal | RedValue |
接口 | Pascal | IDisposable |
方法 | Pascal | ToString |
命名空间 | Pascal | System.Drawing |
参数 | Camel | typeName |
属性 | Pascal | BackColor |
首字母缩写的大小写规则
首字母缩写词是由术语或短语中各单词的首字母构成的单词。例如,HTML 是 Hypertext Markup Language 的首字母缩写。只有在公众广为认知和理解的情况下,才应在标识符中使用首字母缩写词。首字母缩写词不同于缩写词,因为缩写词是一个单词的缩写。例如,ID 是 identifier 的缩写。通常情况下,库名不应使用缩写词。
可在标识符中使用的两个缩写词是 ID 和 OK。在采用 Pascal 大小写格式的标识符中,这两个缩写词的大小写形式应分别为 Id 和 Ok。如果在采用大小写混合格式的标识符中将这两个缩写词用作首个单词,则它们的大小写形式应分别为 id 和 ok。
首字母缩写词的大小写取决于首字母缩写词的长度。所有首字母缩写词应至少包含两个字符。为了便于这些准则的实施,如果某一首字母缩写词恰好包含两个字符,则将其视为短型首字母缩写词。包含三个或三个以上字符的首字母缩写词为长型首字母缩写词。 下列准则为短型和长型首字母缩写词指定了正确的大小写规则。标识符大小写规则优先于首字母缩写词大小写规则。
两字符首字母缩写词的两个字符都要大写,但当首字母缩写词作为大小写混合格式的标识符的首个单词时例外。
例如,名为 DBRate 的属性是一个采用 Pascal 大小写格式的标识符,它使用短型首字母缩写词 (DB) 作为首个单词。又如,名为 ioChannel 的参数是一个采用大小写混合格式的标识符,它使用短型首字母缩写词 (IO) 作为首个单词。
包含三个或三个以上字符的首字母缩写词只有第一个字符大写,但当首字母缩写词作为大小写混合格式的标识符的首个单词时例外。
例如,名为 XmlWriter 的类是一个采用 Pascal 大小写格式的标识符,它使用长型首字母缩写词作为首个单词。又如,名为 htmlReader 的参数是一个采用大小写混合格式的标识符,它使用长型首字母缩写词作为首个单词。
如果任何首字母缩写词位于采用大小写混合格式的标识符开头,则无论该首字母缩写词的长度如何,都不大写其中的任何字符。
例如,名为 xmlStream 的参数是一个采用大小写混合格式的标识符,它使用长型首字母缩写词 (xml) 作为首个单词。又如,名为 dbServerName 的参数是一个采用大小写混合格式的标识符,它使用短型首字母缩写词 (db) 作为首个单词。
复合词和常用术语的大小写规则
不要将所谓的紧凑格式复合词中的每个单词都大写。这种复合词是指写作一个单词的复合词,如“endpoint”。
例如,hashtable 是一个紧凑格式的复合词,应将其视为一个单词并相应地确定大小写。如果采用 Pascal 大小写格式,则该复合词为 Hashtable;如果采用大小写混合格式,则该复合词为 hashtable。若要确定某个单词是否是紧凑格式的复合词,请查阅最新的词典。
下表列出了不是紧凑格式复合词的一些常用术语。术语先以 Pascal 大小写格式显示,后面的括号中的是其大小写混合格式。
BitFlag (bitFlag)
FileName (fileName)
LogOff (logOff)
LogOn (logOn)
SignIn (signIn)
SignOut (signOut)
UserName (userName)
WhiteSpace (whiteSpace)
区分大小写
大小写准则只是为了使标识符更易于阅读和辨认。不能将大小写规则用作避免库元素之间的命名冲突的手段。 不要假定所有编程语言都区分大小写。事实并非如此。不能仅凭大小写区分名称。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。