许多命名约定都与标识符的大小写有关。值得注意的是,公共语言运行库 (CLR) 支持区分大小写和不区分大小写的语言。本主题中描述的大小写约定可帮助开发人员理解和使用库。html
下列术语描述了标识符的不一样大小写形式。web
将标识符的首字母和后面链接的每一个单词的首字母都大写。能够对三字符或更多字符的标识符使用 Pascal 大小写。例如:windows
BackColor服务器
标识符的首字母小写,而每一个后面链接的单词的首字母都大写。例如:网络
backColorsocket
标识符中的全部字母都大写。例如:ide
IO工具
若是标识符由多个单词组成,请不要在各单词之间使用分隔符,以下划线(“_”)或连字符(“-”)等。而应使用大小写来指示每一个单词的开头。开发工具
下列准则是用于标识符的通用规则。编码
注意,这条规则不适用于实例字段。因为成员设计准则中详细说明的缘由,不该使用公共实例字段。
下表汇总了标识符的大小写规则,并提供了不一样类型标识符的示例。
标识符 | 大小写方式 | 示例 |
---|---|---|
类 |
Pascal |
AppDomain |
枚举类型 |
Pascal |
ErrorLevel |
枚举值 |
Pascal |
FatalError |
事件 |
Pascal |
ValueChanged |
异常类 |
Pascal |
WebException |
只读的静态字段 |
Pascal |
RedValue |
接口 |
Pascal |
IDisposable |
方法 |
Pascal |
ToString |
命名空间 |
Pascal |
System.Drawing |
参数 |
Camel |
typeName |
属性 |
Pascal |
BackColor |
首字母缩写词是由术语或短语中各单词的首字母构成的单词。例如,HTML 是 Hypertext Markup Language 的首字母缩写。只有在公众广为认知和理解的状况下,才应在标识符中使用首字母缩写词。首字母缩写词不一样于缩写词,由于缩写词是一个单词的缩写。例如,ID 是 identifier 的缩写。一般状况下,库名不该使用缩写词。
可在标识符中使用的两个缩写词是 ID 和 OK。在采用 Pascal 大小写格式的标识符中,这两个缩写词的大小写形式应分别为 Id 和 Ok。若是在采用大小写混合格式的标识符中将这两个缩写词用做首个单词,则它们的大小写形式应分别为 id 和 ok。 |
首字母缩写词的大小写取决于首字母缩写词的长度。全部首字母缩写词应至少包含两个字符。为了便于这些准则的实施,若是某一首字母缩写词刚好包含两个字符,则将其视为短型首字母缩写词。包含三个或三个以上字符的首字母缩写词为长型首字母缩写词。
下列准则为短型和长型首字母缩写词指定了正确的大小写规则。标识符大小写规则优先于首字母缩写词大小写规则。
例如,名为 DBRate 的属性是一个采用 Pascal 大小写格式的标识符,它使用短型首字母缩写词 (DB) 做为首个单词。又如,名为 ioChannel 的参数是一个采用大小写混合格式的标识符,它使用短型首字母缩写词 (IO) 做为首个单词。
例如,名为 XmlWriter 的类是一个采用 Pascal 大小写格式的标识符,它使用长型首字母缩写词做为首个单词。又如,名为 htmlReader 的参数是一个采用大小写混合格式的标识符,它使用长型首字母缩写词做为首个单词。
例如,名为 xmlStream 的参数是一个采用大小写混合格式的标识符,它使用长型首字母缩写词 (xml) 做为首个单词。又如,名为 dbServerName 的参数是一个采用大小写混合格式的标识符,它使用短型首字母缩写词 (db) 做为首个单词。
例如,hashtable 是一个紧凑格式的复合词,应将其视为一个单词并相应地肯定大小写。若是采用 Pascal 大小写格式,则该复合词为 Hashtable;若是采用大小写混合格式,则该复合词为 hashtable。若要肯定某个单词是不是紧凑格式的复合词,请查阅最新的词典。
通用命名约定讨论的是如何为库元素选择最适当的名称。这些准则适用于全部标识符。后面各节讨论特定元素(如命名空间或属性)的命名。
匈牙利表示法是在标识符中使用一个前缀对参数的某些元数据进行编码,如标识符的数据类型。
大多数状况下,程序集包含所有或部分可重用库,且它包含在单个动态连接库 (DLL) 中。一个程序集可拆分到多个 DLL 中,但这很是少见,在此准则中也没有说明。
程序集和 DLL 是库的物理组织,而命名空间是逻辑组织,其构成应与程序集的组织无关。命名空间能够且常常跨越多个程序集。
<Company>.<Component>.dll
例如,Contoso.WebControls.dll。
为命名空间选择的名称应指示命名空间中的类型所提供的功能。例如,System.Net.Sockets 命名空间包含的类型容许开发人员使用套接字经过网络进行通讯。
命名空间名称的通常格式以下:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
例如,Microsoft.WindowsMobile.DirectX。
命名空间名称是长期使用的、不会更改的标识符。组织的不断发展和变化不该使命名空间名称过期。
若是选择的命名空间或类型的名称与现有名称冲突,则库的用户将不得不对受影响的项的引用进行限定。在大多数开发状况中,都不该出现这种问题。
本节提供的某些准则适用于下面的命名空间类别:
应用程序模型命名空间
基础结构命名空间
核心命名空间
技术命名空间组
应用程序模型中的命名空间提供特定于应用程序中的某个类的功能集。例如,System.Windows.Forms 命名空间中的类型提供编写 Windows 窗体客户端应用程序所需的功能。System.Web 命名空间中的类型支持编写基于 Web 的服务器应用程序。一般,在同一应用程序中不会使用不一样应用程序模型中的命名空间,所以,这下降了名称冲突影响使用您的库的开发人员的可能性。
基础结构应用程序提供专门的支持,不多在程序代码中进行引用。例如,程序开发工具所使用的 *.Designer 命名空间中的类型。*.Permissions 命名空间是基础结构命名空间的另外一个示例。与基础结构命名空间中的类型的名称冲突不可能影响使用您的库的开发人员。
核心命名空间是 System.* 命名空间(不包括应用程序命名空间和基础结构命名空间)。System 和 System.Text 都是核心命名空间的示例。应尽量避免与核心命名空间中的类型发生名称冲突。
属于特定技术的命名空间将具备相同的第一和第二级标识符 (Company.technology.*)。应避免在技术命名空间中出现名称冲突。
例如,若是要编写 Windows 窗体应用程序开发人员要使用的特殊控件库,则不该引入名为 Checkbox 的类型,由于该应用程序模型已存在同名类型 (CheckBox)。
例如,不要使用 Directory 做为类型名称,由于这会与 Directory 类型冲突。