我正在统一这些不一致的命名约定 而这个问题最近让我发疯了。
在我正在使用的代码库中没有关于“ID”的约定; “ID”,“Id”甚至“iD”使用不一致。
****问题**:在.NET中,你们如何利用“ID”? 例如,nodeID,nodeId? FolderID或FolderId?
****编辑**:复数案件怎么样?那么我应该做“NodeIDs”还是“NodeIds”?
由于
答案 0 :(得分:60)
大写是2个字母首字母缩略词。用户界面,知识产权等
“Id”是标识符的缩写,所以它应该保持pascal状态。
答案 1 :(得分:30)
Microsoft's naming guidelines建议使用所有大写的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
我猜这就是为什么他们发明了intellisense ......
关于复数:在我看来,s
应该总是小写的。
答案 2 :(得分:18)
自提出此问题以来,Microsoft已更新其指南。
在MSDN文章Capitalization Conventions(.NET Framework 4.5)中,有一个名为大写复合词和常用术语的部分。在本节的表格中,为"标识符"的缩写提供了以下大小写指南。命名标识符时:
System.Attribute.TypeId
) var id = 42;
) 答案 3 :(得分:9)
最新指南是“Id”,有关此内容和其他内容的更多信息(例如“确定”),请参阅my post最新的框架设计指南(第2版)
答案 4 :(得分:6)
当ID是标识符等的缩写时,我总是将ID大写。它只是看起来不对,让我想到Freud,否则 - 这绝对不是一件好事。
答案 5 :(得分:2)
如果您想检查字典,您会发现该ID不被视为缩写。实际上,表单被指定为ID或I.D.那里。这可能是因为它来自像#34; Identity Documentation"或"标识数据",并且最初并未被视为"标识符"的缩写形式。因此,不仅建议使用表单ID,还要直接支持字典。
答案 6 :(得分:1)
我认为有些人使用“ID”代替“Id”的原因是因为它是“GUID”,“UUID”或“UID”的子集,通常是大写的。
我同意它应该是'Id',但我认为它在很大程度上取决于上下文,因为在某些环境中可能更适合使用'ID'。
所以对我来说'ID'是一个技术术语,是上述的一个子集,或者用于指代这些技术术语中的任何一个,而'Id'是任何类型的标识符的简写,当你在非技术背景下需要一个人像你的公共API或UML一样阅读它,你应该(在我看来)使用'Id'。