注释
此内容由 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 | 字符 |
字符串 | 字符串 | 字符串 | 字符串 |
对象 | 对象 | 对象 | 对象 |
✔️ 在标识符没有语义含义且参数类型不重要的情况下,请使用公用名(例如 value
或 item
)而不是重复类型名称。
命名现有 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 出版。