首字母缩略词的C#命名约定


75

关于首字母缩写词的C#命名,如果我正在编写与Windows API相关的库,是否有针对WindowsApi或WindowsAPI的强大约定,或者仅仅是个人喜好?

Answers:


81

有一个约定,它为所有长度超过2个字符的首字母缩写词指定首字母大写,其余小写。因此HttpContextClientID


29
id-最好为大写。“其他两个常用术语本身是一个类别,因为它们是common语的缩写。“ Ok”和“ Id”这两个词(应按如下所示进行区分)是该准则的例外,缩写应在名称中使用”。“框架设计准则”第二版,第44页。
谢尔盖·特普里亚科夫

34
有人指出,如果ID代表“标识基准”(而不是“标识符”),则ID会再次确定。抱歉,再次确定。
peterchen

3
@Sergey Teplyakov Microsoft准则规定,Pascal只能用于2个以上字符的缩写。在ID和OK的情况下,所有大写形式都可以,但是HTML变成HTML。msdn.microsoft.com/zh-CN/library/141e06ef(v=VS.71).aspx
smdrager,2011年

6
@smdrager:公平地说,仅明确建议使用缩写而不是缩写。
David Hedlund

7
可以注意到,Microsoft本身并不十分严格地遵循此约定。例如,他们在某些地方使用Db Context,而在其他地方则使用DB Null。
汤姆·帕索里克(TomPažourek),2013年

46

Krzysztof Cwalina和Brad Abrams撰写的“ Framework Design Guidelines ”第二版第40-42页

3.1.2首字母大写

不要用两个字符的首字母大写两个字符,除了驼峰式标识符的第一个单词。

System.IO
public void StartIO(Stream ioStream)

请勿仅使用三个或更多字符的首字母缩写词的首字母大写,骆驼式标识符的首字母除外。

System.Xml
public void ProcessHtmlTag(string htmlTag)

请勿在驼峰式标识符的开头加上任何首字母缩写的任何字符,无论其长度如何。


3
如果我看到这个奇怪的“大写2个字母的首字母缩写”规则,我总是会头疼。看起来Microsoft意识到System.IO被命名为错误,并决定制定规则。但是,如何命名Microsoft Visual Studio的标识符呢?MSVSID?我说MsVsId会更好/更一致。
约翰

不幸的是,他们没有遵循自己的命名约定。在本文中查看Dto
ataravati

有谁知道为什么在地球上会出现2个字母的规则?它背后的原因是什么?
rory.ap

@ rory.ap-我认为它源于20多年前《芝加哥风尚手册》的建议。我记得曾在技术作家以前的印刷版中看到过它,但是不知道它是否还在。也可能避免冲突的意义与可能看似不起眼的今天实际上是在当时流行文化的一小部分单词“ID” en.wikipedia.org/wiki/I_Got_Id
StingyJack

16

查看Microsoft有关命名准则和大写字母约定的官方文档:

要区分标识符中的单词,请大写标识符中每个单词的首字母。不要在标识符中的任何地方使用下划线来区分单词。根据标识符的使用,有两种适当的方式可以大写标识符:

  • 帕斯卡套管
  • 骆驼衣

PascalCasing惯例,用于除参数名称的所有标识符,大写每个单词(包括长度超过两个字母缩写词)的第一个字符,如图以下实施例:

  • PropertyDescriptor
  • HtmlTag

对于两个字母的首字母缩略词有一种特殊情况,其中两个字母都大写,如以下标识符所示:

  • IOStream

驼峰规则惯例,只为参数名称使用的,大写每个字的第一字符,除了第一个字,如图所示在以下实施例。如该示例还显示,以驼峰式标识符开头的两个字母的首字母缩写词均为小写。

  • propertyDescriptor
  • ioStream
  • htmlTag

不要对由多个单词组成的所有公共成员,类型和名称空间名称使用PascalCasing。

✓不要使用camelCasing作为参数名称。


4
该文档适用于.NET 1.1。
丹尼尔·A·怀特2010年

8
我看不出有什么区别吗?并不是他们在每个版本或任何版本之间更改了约定。
Skurmedel's

2
这里设计指南书的第二版。我没有进行比较来确定命名没有任何变化。
约翰·桑德斯

2
与大写有关的.NET 4.5准则:msdn.microsoft.com/zh-cn/library/ms229043
v=vs.110).aspx

2
微软的做法已经随着时间而改变。-虽然巧妙。-正如其他人指出的那样,.NET 1.1中的“ DBNull”与.NET 4.5中的“ DbContext”相对。
BrainSlugs83

12

旧问题,新答案。

根据.NET 4首字母缩写大写规则

一定要大写两个字符的首字母缩写词,但驼峰式标识符的第一个单词除外。

命名的属性DBRateDB用作Pascal大小写标识符的首字母缩写词()的示例。命名的参数 ioChannelIO用作驼峰式标识符的第一个单词的缩写词()的示例。

请勿仅使用三个或更多字符的首字母缩写词的首字母大写,骆驼式标识符的首字母除外。

名为class的类XmlWriter是长首字母缩写词的示例,用作Pascal大小写标识符的第一个单词。参数namedhtmlReader 是长首字母缩略词的一个示例,用作驼峰式标识符的第一个单词。

在驼峰式标识符的开头,不要大写任何首字母缩写词的字符,无论其长度如何。

参数namedxmlStreamxml用作驼峰式标识符的第一个单词的长首字母缩写()的示例。命名的参数 dbServerName是一个简短的首字母缩写词(db)的示例,该缩写词用作驼峰式标识符的第一个单词。


8

我听说您应该避免使用缩写词,因此它会变成WindowsApplicationProgrammingInterface

更认真的说(尽管下面引用了,但人们似乎还是在误读以上内容),该页面显示

三个或更多字母的首字母缩写应为Pascal大小写,而不是全部大写。

由于API被认为是众所周知的首字母缩写,因此WindowsApi如果您想遵循准则,则可以选择该名称。


5
如果缩写在领域内是众所周知的,则可以。API在编程中是众所周知的。
约翰·桑德斯

+1。《框架准则》一书建议您避免使用缩写词或首字母缩写词或使用PascalCase。我建议使用WindowsApi。框架中的示例:Uri,UriBuilder HtmlDecode。
Skurmedel

1
@John:是的,我对此有点one之以鼻。:)
放松

@unwind-这是否意味着我们可以使用html而不是HyperTextMarkupLanguage?
拉里·渡边

-1:来自框架设计准则:“通常,避免在标识符名称中使用首字母缩略词很重要,除非它们是通用的,并且对任何可能使用框架的人都可以立即理解。例如,HTML,XML和IO是所有这些都是众所周知的,但是鲜为人知的首字母缩略词肯定应该避免”。API-是常用且可立即理解的首字母缩写词。
谢尔盖·特普利亚科夫

4

都是个人(或组织)偏好。只要您保持一致,就可以。

.NET Framework本身将使用WindowsApi。


这个。刚刚有一个示例,其中APP的业务首字母缩写被用作“ App”,现在看起来像是“ Application”的缩写,而不是其实际含义。
塞拉利昂奥斯卡


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.