大小写约定
注意
此内容根据 Pearson Education, Inc. 许可转载自《框架设计指南:可重用 .NET 库的约定、习语和模式第二版》。 该版本于 2008 年出版,并在此后于第三版对该书进行了全面修订。 此页上的一些信息可能已过时。
本章中的指导原则介绍了使用大小写的简单方法,即在应用一致的情况下,使类型、成员和参数的标识符易读。
有关标识符的首字母大写规则
若要区分标识符中的单词,请将标识符中每个单词的首字母大写。 不要使用下划线来区分单词,或在标识符中的任何位置使用下划线。 有两种适当的方法可以根据标识符的使用将其首字母大写:
PascalCasing
camelCasing
PascalCasing 约定(用于除了参数名称外的所有标识符)将每个单词(包括长度超过两个字母的首字母缩写词)的第一个字符大写,如以下示例所示:
PropertyDescriptor
HtmlTag
两个字母的首字母缩写词是一种特殊情况,其中两个字母都大写,如以下标识符所示:
IOStream
camelCasing 约定(仅用于参数名称,将每个单词的第一个字符(除第一个单词之外)大写,如以下示例所示。 如示例中所示,以字母混合形式表示的两个字母首字母缩写词均采用小写。
propertyDescriptor
ioStream
htmlTag
✔️ 对于包含多个单词的所有公共成员、类型和命名空间名称,请使用 PascalCasing。
✔️ 使用 camelCasing 作为参数名称。
下表描述了不同标识符类型的首字母大写规则。
标识符 | 大小写 | 示例 |
---|---|---|
命名空间 | Pascal | namespace System.Security { ... } |
类型 | Pascal | public class StreamReader { ... } |
接口 | Pascal | public interface IEnumerable { ... } |
方法 | Pascal | public class Object { public virtual string ToString(); } |
属性 | Pascal | public class String { public int Length { get; } } |
事件 | Pascal | public class Process { public event EventHandler Exited; } |
字段 | Pascal | public class MessageQueue { public static readonly TimeSpan InfiniteTimeout; } public struct UInt32 { public const Min = 0; } |
枚举值 | Pascal | public enum FileMode { Append, ... } |
参数 | 混合 | public class Convert { public static int ToInt32(string value); } |
将组合词和常见术语的首字母大写
为了实现首字母大写,大多数组合术语都被视为单个单词。
❌ 不要将所谓的“闭合形式”组合词中的每个首字母大写。
这些是以单个词(如终结点)形式编写的组合词。 为了符号大小写准则,请将“闭合形式”组合词视为单个单词。 使用当前字典来确定是否以闭合形式写入组合词。
Pascal | 混合 | Not |
---|---|---|
BitFlag |
bitFlag |
Bitflag |
Callback |
callback |
CallBack |
Canceled |
canceled |
Cancelled |
DoNot |
doNot |
Don't |
Email |
email |
EMail |
Endpoint |
endpoint |
EndPoint |
FileName |
fileName |
Filename |
Gridline |
gridline |
GridLine |
Hashtable |
hashtable |
HashTable |
Id |
id |
ID |
Indexes |
indexes |
Indices |
LogOff |
logOff |
LogOut |
LogOn |
logOn |
LogIn |
Metadata |
metadata |
MetaData, metaData |
Multipanel |
multipanel |
MultiPanel |
Multiview |
multiview |
MultiView |
Namespace |
namespace |
NameSpace |
Ok |
ok |
OK |
Pi |
pi |
PI |
Placeholder |
placeholder |
PlaceHolder |
SignIn |
signIn |
SignOn |
SignOut |
signOut |
SignOff |
UserName |
userName |
Username |
WhiteSpace |
whiteSpace |
Whitespace |
Writable |
writable |
Writeable |
区分大小写
可在 CLR 上运行的语言不需要支持区分大小写,但有些则不需要。 即使你的语言支持,其他可能访问你框架的语言也不是如此。 因此,外部可访问的任何 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 日。