通用命名约定
注意
此内容根据 Pearson Education, Inc. 许可转载自《框架设计指南:可重用 .NET 库的约定、习语和模式第二版》。 该版本于 2008 年出版,并在此后于第三版对该书进行了全面修订。 此页上的一些信息可能已过时。
本部分介绍与选词相关的常规命名约定、有关使用缩写和首字母缩写词的准则,以及如何避免使用特定于语言的名称的建议。
选词
✔️ 选择易读的标识符名称。
例如,属性 HorizontalAlignment
在英文方面的可读性高于 AlignmentHorizontal
。
✔️ 可读性比简洁性更重要。
属性名称 CanScrollHorizontally
比 ScrollableX
(对 X 轴的模糊引用)更好。
❌ 不要使用下划线、连字符或任何其他非字母数字字符。
❌ 不要使用匈牙利表示法。
❌ 避免使用与广泛应用的编程语言关键字冲突的标识符。
根据公共语言规范 (CLS) 的规则 4,所有符合语言都必须提供一种机制,以允许访问使用该语言的关键字作为标识符的已命名项。 例如,在这种情况下,C# 使用 @ 符号作为转义机制。 不过,最好是避免使用常见关键字,因为使用转义序列的方法比不使用该序列的方法更难。
使用缩写和首字母缩写词
❌ 不要使用缩写或缩写词作为标识符名称的一部分。
例如,使用 GetWindow
而不是 GetWin
。
❌ 不要使用未被广泛接受的任何首字母缩写词,仅在必要时才使用。
避免使用特定于语言的名称
✔️ 使用有语义的名称,而不是类型名称的特定于语言的关键字。
例如,相比 GetInt
,GetLength
是更好的名称。
✔️ 在极少数情况下,如果标识符没有超出其类型的语义含义,则使用泛型 CLR 类型名称,而不是特定于语言的名称。
例如,转换为 Int64 的方法应命名为 ToInt64
,而不是 ToLong
(因为 Int64 是特定于 C# 别名 long
的 CLR 名称)。 下表显示了几个使用 CLR 类型名称的基本数据类型,以及 C#、Visual Basic 和 C++) 的相应类型名称。
C# | Visual Basic | C++ | CLR |
---|---|---|---|
sbyte | SByte | char | SByte |
byte | Byte | unsigned char | Byte |
short | Short | short | Int16 |
ushort | UInt16 | unsigned short | UInt16 |
int | Integer | int | Int32 |
uint | UInt32 | unsigned int | UInt32 |
long | Long | __int64 | Int64 |
ulong | UInt64 | unsigned __int64 | UInt64 |
float | 单精度 | float | 单精度 |
double | 双精度 | double | 双精度 |
bool | 布尔值 | bool | 布尔值 |
char | Char | wchar_t | Char |
string | 字符串 | 字符串 | 字符串 |
object | Object | Object | Object |
✔️ 在极少数情况下,如果标识符没有语义含义,并且参数的类型并不重要,可以使用常见名称(如 value
或 item
),而不是重复使用类型名称。
命名现有 API 的新版本
✔️ 创建现有 API 的新版本时,使用类似于旧 API 的名称。
这有助于突出显示两个 API 之间的关系。
✔️ 更喜欢添加后缀(而非前缀)来指示现有 API 的新版本。
这将有助于在浏览文档或使用 IntelliSense 时发现。 旧版本的 API 将被组织到新的 Api 附近,因为大多数浏览器和 IntelliSense 都按字母顺序显示标识符。
✔️ 考虑使用全新但有意义的标识符,而不是添加后缀或前缀。
✔️ 使用数字后缀来指示现有 API 的新版本,尤其是当 API 的现有名称是唯一有意义的名称(例如,如果其是行业标准),并且添加任何有意义的后缀(或更改名称)并非不是合适的选择时。
❌ 不要使用标识符的“前”(或类似的)后缀,将其与同一 API 的先前版本区分开。
✔️ 在引入在 64 位整数上操作的 API 版本(长整数)而不是在 32 位整数上操作时,可以使用后缀“64”。 仅当存在现有的 32 位 API 时,才需要采用此方法;请勿对只有 64 位版本的新 API 使用此方法。
Portions © 2005, 2009 Microsoft Corporation 版权所有。 保留所有权利。
在 Pearson Education, Inc. 授权下,由 Addison-Wesley Professional 作为 Microsoft Windows 开发系列的一部分再版自 Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition(Framework 设计准则:可重用 .NET 库的约定、惯例和模式第 2 版),由 Krzysztof Cwalina 和 Brad Abrams 发布于 2008 年 10 月 22 日。