常规命名约定讨论了如何为你的库元素选择最好的名称。这些指导方针适用于所有的标识符。稍后的部分将讨论如何命名特定的元素(如命名空间或属性)。
单词选择
选择简单易读的标识符名称。例如,在英语中,一个名为 HorizontalAlignment 的属性要比 AlignmentHorizontal 更易于阅读。
倾向于简要的可读性。属性名 CanScrollHorizontally 要比 ScrollableX(获得 X 轴的引用)更好。
不要使用下划线、连字符,或任何其他非字母数字的字符。
不要使用匈牙利符号。
匈牙利符号是在标识符中包括一个前缀来对一些与参数相关的元数据(如标识符的数据类型)而进行的编码实践。
避免使用与广泛被编程语言所使用的关键字相冲突的标识符。
虽然与 CLS 兼容的编程语言必须提供一个把关键字当成规则单词来使用的方式,但是最佳实践还是会提示你不要强制开发者去理解应该如何这样做。大部分编程语言的语言参考文档中都包含有一个被该语言所使用的关键字列表。如下所示的表格中为一些广泛被使用的编程语言提供了参考文档的链接。
编程语言 | 链接 |
---|---|
C# | C# 参考 |
C++ | C++ 语言参考 |
Visual Basic | Visual Basic 参考 |
缩写词和首字母缩写词
通常,你应该尽量避免缩写词或首字母缩写词的使用。因为它们会让你的命名缺少可读性。同样,它们对于在假设广泛被认可的首字母缩写词是安全的时候也是难以理解的。
关于缩写词的字母大写规则,请参考:[首字母缩写词的字母大写规则]。
不要使用缩写词或缩写表达式来作为标识符名称的一部分。
例如,使用 OnButtonClick 要胜于 OnBtnClick。
除非在必要的时候,不要使用任何没有广泛被认可的字母缩写词。
编程语言特定的名称
为类型名称使用语义趣味名称要胜于使用编程语言特定的关键字。例如,GetLength 就是比 GetInt 更好的名称。
在一个标识符没有类型语义含意的罕见案例中,使用一个普通的公共语言运行时(CLR)类型名称要胜于使用一个编程语言特定的名称,
例如,一个把数据转换成 Int16 的方法应该被命名为 ToInt16 而不是 ToShort,因为 Short 是编程语言为 Int16 所定义的特定类型名称。
如下所示的表格说明了公共编程语言以及 CLR 相对物中的编程语言特定的类型名称。
C# 类型名称 | Visual Basic 类型名称 | JScript 类型名称 | Visual C++ 类型名称 | Ilasm.exe 呈现 | CLR 类型名称 |
---|---|---|---|---|---|
sbyte | SByte | sByte | char | int8 | SByte |
byte | Byte | byte | unsigned char | unsigned int8 | Byte |
short | Short | short | short | int16 | Int16 |
ushort | UInt16 | ushort | unsigned short | unsigned int16 | UInt16 |
int | Integer | int | int | int32 | Int32 |
uint | UInt32 | uint | unsigned int | unsigned int32 | UInt32 |
long | Long | long | __int64 | int64 | Int64 |
ulong | UInt64 | ulong | unsigned __int64 | unsigned int64 | UInt64 |
float | Single | float | float | float32 | Single |
double | Double | double | double | float64 | Double |
bool | Boolean | boolean | bool | bool | Boolean |
char | Char | char | wchar_t | char | Char |
string | String | string | String | string | String |
object | Object | object | Object | object | Object |