大小写约定

注意

此内容根据 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 日。

请参阅