大多数命名约定都适合于对标识符进行字母大小写包装。重要的注意事项就是公共语言运行时环境(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 就是一个标识符缩写词。在一般情况下,库的名称中不应该使用缩写词。
提示:两个能够在标识符中被使用的缩写词是 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)
字母大小写敏感性
单独存在的字母大小写指导方针使得标识符更加容易被读取并认可。但是,字母大小写包装不能够被用来作为避免库元素之间出现命名冲突的手段。