缩写词的C#命名约定

del*_*ber 63 c# naming-conventions

关于缩写词的C#命名,如果我正在编写一个与Windows API相关的库,那么对WindowsApi或WindowsAPI有任何强烈的约定,还是只是个人偏好?

Dav*_*und 62

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

  • 有人指出,如果ID代表"识别基准"(而不是"标识符"),那么ID就可以了.对不起,好的. (30认同)
  • Id - 最好是大写."另外两个常用的术语本身属于一个类别,因为它们是常见的俚语缩写.两个词"Ok"和"Id"(它们应该如图所示)是指南的例外情况.缩写应该用在名称中"."框架设计指南"第2版,第44页. (25认同)
  • 可以注意到,微软本身并没有严格遵守这一惯例.例如,他们在某些地方使用**Db**Context,而在其他地方使用**DB**Null. (5认同)
  • @smdrager:公平地说,这只是为缩略语而非缩写而明确推荐的. (4认同)
  • @Sergey Teplyakov微软指南说只使用Pascal超过2个字符的缩写.在ID和OK的情况下,所有上限都没问题,但HTML变为Html.http://msdn.microsoft.com/en-us/library/141e06ef(v=VS.71).aspx (3认同)
  • `DBNull`比`DbContext`旧很多; 现在的常见做法是仅将首字母缩写词的首字母大写; 即使它只有两个字母长. - 甚至一些SharePoint的东西现在都是"Sp". - 首字母缩略词命名的"两个字母长"例外变得过时,并且充其量现在是可选的(如果没有完全弃用). - 另外,重新:"好",你应该真的避免成员名称中的缩写; 将其拼写为"好的". - 在UI中仍然可以显示"OK",但是,在代码中,它应该是"Okay". (3认同)
  • @smdrager:FDG说这两个是这个规则的例外.您可以在第44页打开本书并自己查看这些例外:) (2认同)
  • @ BrainSlugs83 DB不是缩写,更像是缩写或快捷方式,就像`Id`,所以更正确的IMO将是`DbNull`而不是`DBNull`.数据库,SharePoint等不是多个单词.[最新文档明确指出](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions)对于两个字母的真正缩略语,两个字母都应该是大写的.例如`IOStream`.我觉得这很奇怪.我们有这样一个类的接口,现在它会读取`IIOStream`:/ (2认同)

Ser*_*kov 37

" 框架设计指南 "第2版,Krzysztof Cwalina和Brad Abrams,第40-42页

3.1.2大写缩略语

DO利用两个字符的首字母缩写词都字符,除了骆驼外装标识符的第一个字.

System.IO
public void StartIO(Stream ioStream)
Run Code Online (Sandbox Code Playgroud)

除了驼峰标识符的第一个单词外,DO仅使用三个或更多个字符的首字母缩写词的首字母大写.

System.Xml
public void ProcessHtmlTag(string htmlTag)
Run Code Online (Sandbox Code Playgroud)

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

  • 如果我看到这个奇怪的“首字母缩略词大写”的规则,我总是会头疼。微软似乎意识到 System.IO 的命名是错误的,并决定围绕它制定一条规则。但是Microsoft Visual Studio的标识符如何命名呢?MSVSID?我认为 MsVsId 会更好/更一致。 (5认同)
  • 不幸的是,他们不遵循自己的命名约定。看一下这篇文章中Dto的使用:https://learn.microsoft.com/en-us/aspnet/web-api/overview/data/using-web-api-with-entity-framework/part-5 (2认同)
  • 有谁知道为什么会出现两个字母的规则?其背后的原因是什么? (2认同)

Fer*_*ryt 10

在此处查看Microsoft官方命名准则命名准则

  • 我看不出有什么区别?这并不是说他们改变了每个版本或任何东西之间的约定. (8认同)
  • 该文档适用于.NET 1.1. (3认同)
  • 这是设计指南书的第二版.我没有比较确定命名中根本没有变化. (2认同)
  • 与资本化有关的.NET 4.5指南:https://msdn.microsoft.com/en-us/library/ms229043(v = vs.110).aspx (2认同)
  • 微软的做法随着时间的推移而发生了变化 - 虽然巧妙. - 正如其他人指出的那样,.NET 1.1中的"DBNull"与.NET 4.5中的"DbContext"相比. (2认同)

unw*_*ind 8

我听说你应该避免缩写,所以它会成为WindowsApplicationProgrammingInterface.

更严重的是(尽管下面的引用,人们似乎误读了上述内容),这个页面说:

任何三个或更多字母的缩写词应该是Pascal大小写,而不是所有大写字母.

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

  • 如果缩写在域中是众所周知的,则可以使用缩写.API在编程中是众所周知的. (4认同)

Ell*_*iot 7

老问题,新答案.

根据MSDN资本化公约文章"缩略语的资本化规则"部分:

除了骆驼标识符的第一个单词之外,请将两个字符的首字母缩写大写.

名为property的属性DBRateDB用作Pascal标识符的第一个单词的简短缩写()的示例.名为的参数 ioChannelIO用作camel-cased标识符的第一个单词的简短缩写()的示例.

除了骆驼标识符的第一个单词外,请仅使用三个或更多字符的首字母缩写词大写.

名为的类XmlWriter是用作Pascal标识符的第一个单词的长首字母缩写的示例.名为的参数htmlReader 是用作camel-cased标识符的第一个单词的长首字母缩写的示例.

在骆驼标识符的开头,不要将任何首字母缩略词的任何字符大写,无论它们的长度如何.

名为的参数xmlStreamxml用作camel-cased标识符的第一个单词的长首字母缩略词()的示例.名为的参数 dbServerNamedb用作camel-cased标识符的第一个单词的简短缩写()的示例.