常规命名约定

注释

此内容由 Pearson Education, Inc. 的许可从 框架设计指南:可重用 .NET 库的约定、习惯和模式(第 2 版)重新打印。 该版于2008年出版,此后该书已于 第三版全面修订。 此页上的一些信息可能已过期。

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

用词选择

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

例如,名为 HorizontalAlignment 的属性比 AlignmentHorizontal 更容易阅读。

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

属性名称 CanScrollHorizontally 优于 ScrollableX (对 X 轴的模糊引用)。

❌ 请勿使用下划线、连字符或任何其他非字母字符。

❌ 请勿使用匈牙利表示法。

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

根据公共语言规范(CLS)规则 4,所有合规语言都必须提供一种机制,允许访问使用该语言关键字作为标识符的命名项。 例如,C#在本例中,使用 @ 符号作为转义机制。 但是,避免常见关键字仍是个好主意,因为使用转义序列的方法比没有转义序列的方法要困难得多。

使用缩写和首字母缩写词

❌ 请勿使用缩写或收缩作为标识符名称的一部分。

例如,使用 GetWindow 而不是 GetWin

❌ 请勿使用未广泛接受的任何首字母缩略词,即使它们是必需的。

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

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

例如,GetLength 是比 GetInt 更好的名称。

✔️ 在极少数情况下,当标识符在其类型之外没有语义含义时,请使用泛型 CLR 类型名称,而不是特定于语言的名称。

例如,转换到 Int64 的方法应命名 ToInt64,而不是 ToLong (因为 Int64 是特定于 C# 的别名 long的 CLR 名称)。 下表使用 CLR 类型名称(以及 C#、Visual Basic 和 C++ 的相应类型名称)提供了多个基本数据类型。

C#(编程语言) Visual Basic C++ CLR(公共语言运行库)
sbyte SByte 字符 SByte
byte 字节 无符号字符 字节
Int16
ushort UInt16 未签名的短 UInt16
int 整数 int Int32
uint UInt32 未签名的 int UInt32
__int64 Int64
ulong UInt64 未签名的__int64 UInt64
漂浮 漂浮
bool 布尔值 bool 布尔值
字符 字符 wchar_t 字符
字符串 字符串 字符串 字符串
对象 对象 对象 对象

✔️ 在标识符没有语义含义且参数类型不重要的情况下,请使用公用名(例如 valueitem)而不是重复类型名称。

命名现有 API 的新版本

✔️ 创建现有 API 的新版本时,请使用类似于旧 API 的名称。

这有助于突出显示 API 之间的关系。

✔️ DO 更喜欢添加后缀而不是前缀来指示现有 API 的新版本。

这有助于在浏览文档或使用 IntelliSense 时发现。 旧版 API 将组织到靠近新 API,因为大多数浏览器和 IntelliSense 按字母顺序显示标识符。

✔️ 请考虑使用全新的但有意义的标识符,而不是添加后缀或前缀。

✔️ 请务必使用数字后缀来指示现有 API 的新版本,特别是如果 API 的现有名称是唯一有意义的名称(即,如果它是行业标准),如果添加任何有意义的后缀(或更改名称)不是合适的选项。

❌ 请勿将标识符的“Ex”(或类似)后缀与同一 API 的早期版本区分开来。

✔️ 在引入对 64 位整数(长整数)而不是 32 位整数进行作的 API 版本时,请使用“64”后缀。 仅当现有 32 位 API 存在时,才需要采用此方法;不要对只有 64 位版本的全新 API 执行此作。

部分内容 © 2005, 2009 Microsoft 公司。 保留所有权利。

获得皮尔逊教育公司许可后重印自 框架设计准则:可重用 .NET 库的约定、习惯和模式 ,由 Krzysztof Cwalina 和 Brad Abrams 编写,并作为微软 Windows 开发系列中的出版物之一,于 2008 年 10 月 22 日由 Addison-Wesley Professional 出版。

另请参阅