"ID"的.NET命名约定(任何标识:大写)

dan*_*die 31 .net naming-conventions

我正在统一这些不一致的命名约定,这个问题最近让我发疯了.

在我正在使用的代码库中没有关于"ID"的约定; "ID","Id"甚至"iD"使用不一致.

****问题**:在.NET中,你们如何将"ID"大写?例如,nodeID,nodeId?FolderID或FolderId?

****编辑**:复数案件怎么样?那么我应该做"NodeIDs"还是"NodeIds"?

谢谢

Rom*_*ier 61

大写是2个字母的字母缩略词.用户界面,IP等

"Id"是Identifier 的缩写,所以它应该保持pascal状态.

  • 在复数的情况下,它仍然没有首字母缩略词,所以我会说"NodeIds". (4认同)
  • Visual Studio中的代码分析支持此答案:"CA1709:Microsoft.Naming:通过将成员名称'InvoiceSearch.DeliveryID'更改为'Id'来纠正'ID'的大小写.'Id'是缩写,因此不受首字母缩略词套管指导的约束." (4认同)
  • "缩写""应该保留pascal"的规则从何而来?例如,MW和OED2都称它为"缩写",两者仍然使用全大写. (2认同)
  • 它也是一般.NET命名约定中的推荐(http://msdn.microsoft.com/en-us/library/vstudio/ms229043(v=vs.100).aspx) (2认同)
  • @IlliaRatkevych,您可能想知道缩写词和首字母缩略词之间的区别。您给出的两个示例都是首字母缩略词,其中每个字母代表一个单词,因此两个字母都应大写。缩写是单个单词的缩写形式,就像 Id 是“Identification”的“缩写”一样。 (2认同)

Dan*_*ant 31

微软的命名指南建议使用所有大写的2字母缩写词作为标识符(IP,IO,UI等),所以倾向于"ID"(即使它不是首字母缩略词),因为当我读它时,我仍然说这些字母个别.

但老实说,我不认为微软知道/知道如何处理ID/Id:

ID

System.Runtime.InteropServices._Activator.GetIDsOfNames()
System._AppDomain.GetIDsOfNames()
System.Runtime.InteropServices._Attribute.GetIDsOfNames()
System.Type.GetTypeFromProgID()
System.Threading.Thread.ThreadID
System.Threading.Thread.GetDomainID()
System.Runtime.Serialization.ObjectHolder.ContainerID
System.Globalization.Calendar.ID
System.Globalization.CultureInfo.InvariantCultureID
System.Web.UI.Control.ClientID
System.Web.UI.Control.UniqueID

Id

System.AppDomain.GetCurrentThreadId()
System.AppDomain.GetIdForUnload()
System.AppDomain.IsDomainIdValid()
System.AppDomain.GetId()
System.Attribute.TypeId
System.TypeLoadException.ResourceId
System.Reflection.AssemblyAlgorithm.AssemblyAlgorithmAttribute.AlgorithmId
System.Runtime.Remoting.Lifetime.Lease.GetNextId()
System.Xml.Xpath.XPathNavigator.UniqueId
System.Data.OleDb.DBPropSet.PropertyId
Run Code Online (Sandbox Code Playgroud)

(来自http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/dcb8e08b-026a-4903-a413-7dbdda131a82/)

我猜这就是他们发明intellisense的原因......

关于多元化:在我看来,s应该始终是小写的.

  • "老实说,我认为微软不知道该怎么做:"< - 这正是我所处的心态...... (3认同)
  • @Sung - 你为什么说 DbDataReader 的名字有误?通过@Jeff Moser 提到的框架设计指南一书,他们写道,写成单个单词的复合词(例如“端点”)应该被视为单个单词,因此 - Db 是缩写而不是首字母缩写词,应该是 Db而不是 DB。如果已经在谈论微软不知道该怎么做,你对这个`System.Data.OleDb.DBPropSet` 有什么看法 - 微软,请决定:Db 还是 DB?? (2认同)

Dav*_*dRR 20

自从提出此问题以来,Microsoft已更新其指南.

在MSDN文章Capitalization Conventions(.NET Framework 4.5)中,有一个名为Capitalizing Compound Words和Common Terms的部分.在本节的表中,在命名标识符时,"identifier"的缩写给出了以下大小写指南:

  • Pascal大小写适用时,使用Id.(实施例:System.Attribute.TypeId)
  • Camel外壳适用时,使用id.(实施例:var id = 42;)
  • 永远不要使用ID.


Jef*_*ser 9

最新指南是"Id",有关此内容和其他内容的更多信息(例如"Ok"),请参阅最新的框架设计指南(第2版)

  • 让我们一起去"好吧",让每个人都不开心:) (6认同)

tva*_*son 6

当ID是标识符等的缩写时,我总是将ID大写.它只是看起来不对,让我想起弗洛伊德,否则 - 这绝对不是一件好事.

  • 当我在变量或函数名称中看到Id而不是ID作为标识符的缩写时,我也倾向于想到弗洛伊德.(@jfar和tvanfosson:我不认为它是一个笑话,只是一个事实陈述.)+1与我在同一波长上(以抵消那个downvote). (3认同)
  • 容易称别人幽默,很难实现这个笑话是蹩脚的.:d (2认同)
  • 当你看到Io时,你会想到木星的月亮吗? (2认同)
  • 实际上,当我在SO中看到莎士比亚时,我会想起莎士比亚,这是一种无衬线字体!http://www.bartleby.com/70/50007.html (2认同)