通用命名约定讨论的是如何为库元素选择最适当的名称。这些准则适用于所有标识符。后面各节讨论特定元素(如命名空间或属性)的命名。
选择名称
请选择易读的标识符名称。例如,英文属性名称 HorizontalAlignment 比 AlignmentHorizontal 更具可读性。
可读性比简洁性更重要。属性名称 CanScrollHorizontally 比 ScrollableX(指 X 轴,但意义不明确)更好。
不要使用下划线、连字符或任何其他非字母数字字符。
不要使用匈牙利表示法。
匈牙利表示法是在标识符中使用一个前缀对参数的某些元数据进行编码,如标识符的数据类型。
避免使用与常用编程语言的关键字冲突的标识符。
虽然符合 CLS 的语言必须提供将关键字用作普通字的方法,最佳做法不要求强制开发人员了解如何实现。对于大多数编程语言,语言参考文档都会提供语言所使用的关键字列表。下表提供了某些常用编程语言的参考文档的链接。
语言 | 链接 |
---|---|
C# | C# 参考 |
C++ | C++ Language Reference |
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 |
在标识符没有语义含义且参数的类型不重要的极少数情况下,应使用通用名称(如值或项),而不要重复类型名称。
部分版权所有 2005 Microsoft Corporation。保留所有权利。
部分版权所有 Addison-Wesley Corporation。保留所有权利。
有关设计指南的更多信息,请参见 Krzysztof Cwalina 和 Brad Abrams 编著、Addison-Wesley 于 2005 年出版的“Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries”(《框架设计指南:可重用 .NET 库的约定、术语和模式》)。