【发布时间】:2010-01-21 12:38:22
【问题描述】:
关于首字母缩略词的 C# 命名,如果我正在编写与 Windows API 相关的库,是否对 WindowsApi 或 WindowsAPI 有任何严格的约定,或者只是个人喜好?
【问题讨论】:
标签: c# naming-conventions
关于首字母缩略词的 C# 命名,如果我正在编写与 Windows API 相关的库,是否对 WindowsApi 或 WindowsAPI 有任何严格的约定,或者只是个人喜好?
【问题讨论】:
标签: c# naming-conventions
有一个约定,它为长度超过 2 个字符的所有首字母缩写词指定首字母大写,其余小写。因此HttpContext 和ClientID。
【讨论】:
“Framework Design Guidelines”第二版,Krzysztof Cwalina 和 Brad Abrams pp.40-42
3.1.2 首字母大写
请将两个字符的首字母缩写词中的两个字符大写,驼峰式标识符的第一个单词除外。
System.IO
public void StartIO(Stream ioStream)
务必仅将具有三个或更多字符的首字母缩略词的第一个字符大写,但驼峰式标识符的第一个单词除外。
System.Xml
public void ProcessHtmlTag(string htmlTag)
请勿在驼峰式标识符的开头将任何首字母缩略词的任何字符大写,无论其长度如何。
【讨论】:
在Naming Guidelines & Capitalization Conventions上查看微软的官方文档:
要区分标识符中的单词,请将标识符中每个单词的首字母大写。不要在标识符中的任何地方使用下划线来区分单词,或者就此而言。根据标识符的用途,有两种适当的方式将标识符大写:
- PascalCasing
- camelCasing
PascalCasing 约定,用于除参数名称外的所有标识符,将每个单词的第一个字符(包括长度超过两个字母的首字母缩写词)大写,如以下示例所示:
PropertyDescriptorHtmlTag双字母首字母缩写词的特殊情况是两个字母都大写,如以下标识符所示:
IOStreamcamelCasing 约定,仅用于参数名称,将除第一个单词之外的每个单词的第一个字符大写,如以下示例所示。如示例还所示,以驼峰式标识符开头的双字母首字母缩写词都是小写。
propertyDescriptorioStreamhtmlTag✓ 务必对由多个单词组成的所有公共成员、类型和命名空间名称使用 PascalCasing。
✓ 做使用camelCasing作为参数名称。
【讨论】:
老问题,新答案。
根据.NET 4 Capitalization Rules for Acronyms:
双字符首字母缩写词的两个字符都大写,除了 驼峰式标识符的第一个单词。
一个名为
DBRate的属性是一个简短的首字母缩写词 (DB) 的示例,用作 Pascal 大小写标识符的第一个单词。一个名为的参数ioChannel是用作第一个单词的简短首字母缩写词 (IO) 的示例 驼峰式标识符。只有三个或三个以上的首字母缩写词的首字母大写 字符,除了驼峰式标识符的第一个单词。
名为
XmlWriter的类是一个长首字母缩写词的示例,用作 Pascal 大小写标识符的第一个字。名为htmlReader的参数 是用作 a 的第一个单词的长首字母缩写词的示例 驼峰式标识符。不要将任何首字母缩略词的任何字符大写,无论 它们的长度,在驼峰式标识符的开头。
名为
xmlStream的参数是使用的长首字母缩写词 (xml) 的示例 作为驼峰式标识符的第一个单词。一个名为的参数dbServerName是用作第一个缩写词 (db) 的示例 驼峰式标识符的单词。
【讨论】:
我听说你应该避免缩写,所以它会变成WindowsApplicationProgrammingInterface。
更严重的是(人们似乎误读了上面的内容,尽管下面引用了),this page 说:
三个或更多字母的任何首字母缩写词都应该是 Pascal 大小写,而不是全部大写。
由于 API 被认为是一个众所周知的首字母缩略词,因此如果您想遵循指南,则可以选择名称 WindowsApi。
【讨论】:
这只是个人(或组织)偏好。只要你保持一致,你会没事的。
.NET Framework 本身将使用 WindowsApi。
【讨论】:
个人喜好。但是.NET 会使用WindowsApi。类似于TcpClient的命名。
【讨论】:
也看看 FxCop。这是一个很好的实用程序,可以帮助解决此类问题。
【讨论】:
以下是一些需要遵循的简单规则:
如果标识符是camel-cased,则始终将第一个单词全部小写,无论它是首字母缩略词还是单词。如果首字母缩略词在标识符中的任何其他位置,则无论其长度如何,都只大写第一个字母。
如果标识符是pascal-cased,则将两个字母首字母缩写词的两个字母大写,或者只将由三个或更多字母组成的首字母缩写词的第一个字母大写,而不管它在标识符中的位置。
对于 2 个字母的首字母缩略词,例如 Db in ApplicationDbContext,这些规则有一些例外。
[示例]
驼峰式标识符: ioStream、htmlElement、dataGrid
Pascal 大小写标识符: IOStream、TcpClient、CustomerDto
【讨论】: