通用命名约定

注意

此内容根据 Pearson Education, Inc. 许可转载自《框架设计指南:可重用 .NET 库的约定、习语和模式第二版》。 该版本于 2008 年出版,并在此后于第三版对该书进行了全面修订。 此页上的一些信息可能已过时。

本部分介绍与选词相关的常规命名约定、有关使用缩写和首字母缩写词的准则,以及如何避免使用特定于语言的名称的建议。

选词

✔️ 选择易读的标识符名称。

例如,属性 HorizontalAlignment 在英文方面的可读性高于 AlignmentHorizontal

✔️ 可读性比简洁性更重要。

属性名称 CanScrollHorizontallyScrollableX(对 X 轴的模糊引用)更好。

❌ 不要使用下划线、连字符或任何其他非字母数字字符。

❌ 不要使用匈牙利表示法。

❌ 避免使用与广泛应用的编程语言关键字冲突的标识符。

根据公共语言规范 (CLS) 的规则 4,所有符合语言都必须提供一种机制,以允许访问使用该语言的关键字作为标识符的已命名项。 例如,在这种情况下,C# 使用 @ 符号作为转义机制。 不过,最好是避免使用常见关键字,因为使用转义序列的方法比不使用该序列的方法更难。

使用缩写和首字母缩写词

❌ 不要使用缩写或缩写词作为标识符名称的一部分。

例如,使用 GetWindow 而不是 GetWin

❌ 不要使用未被广泛接受的任何首字母缩写词,仅在必要时才使用。

避免使用特定于语言的名称

✔️ 使用有语义的名称,而不是类型名称的特定于语言的关键字。

例如,相比 GetIntGetLength 是更好的名称。

✔️ 在极少数情况下,如果标识符没有超出其类型的语义含义,则使用泛型 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

✔️ 在极少数情况下,如果标识符没有语义含义,并且参数的类型并不重要,可以使用常见名称(如 valueitem),而不是重复使用类型名称。

命名现有 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 日。

请参阅