这有点花哨,但我看到有些人在下面使用Id



 private int userId;
public int getUserId();
 


,其他使用:

 private int userID;
public int getUserID();
 


其中一个比另一个更好吗?为什么?在大型项目中,我看到的结果非常不一致。如果我要设定一个大多数人都熟悉的标准?哪个是常规标准?

评论

一致性是最重要的事情。无论是骆驼案,还是下划线或其他。要保持一致。

查看您语言的XML API,以了解它们的工作方式。 Java命名类如SAXParser和DOMException,.NET命名类如XmlDocument。基于此,我想说Java中的“ ID”,C#中的“ Id”。

但是,按照惯例,在Java中,大写标识符用于静态字段,因此基本字段的“ ID”名称不是最好的。随之而来的是一致性...

您能否命名变量EGO和SuperEGO?我不这么认为。 ;)

什么?!一致性?愤怒的战争在哪里?就是这样,我特此提名自己为神圣的驼峰式语法的守护者,并据此颁布法令,以全称的首字母缩略词来做是适合新手的。另外,除非您的猫很无聊并且做奇怪的事情,否则要从顶部滚动卫生纸是正确的,在这种情况下,它们很难解开从底部滚动的卫生纸,这使得这种异端性为猫的主人。我不知道为什么我要对此作出命令。我想马桶滚动方向的圣火守护者鲍勃很忙。

#1 楼

在这些情况下,要遵循的最重要的规则是一致性:像其他人一样做。 Java命名类,例如SAXParser和DOMException,.NET命名类,例如XmlDocument。

基于此,我想说Java中的“ ID”,C#中的“ Id”。 >但是,我已经看到Java EE 6有一个名为@Id的注释(请参阅文档),因此Java似乎将“ Id”视为一个普通单词。

评论


@Id指向注释类名,而不是变量名。错误的例子。

– jwenting
13年2月12日在7:26

SAXParser可能是(但幸运的不是)SimpleAPIforXMLParser(甚至是SimpleApplicationProgramingInterfaceforExtesibleMarkupLanguageParser)。每个大写字母都是单词的开头。因此,即使在Java中,它也应为“ Id”

–user470365
13年2月12日在10:42

@jwenting问题在于找出“ id”是像一个单词还是两个单词。 @Id表示这是一个单词,因此变量名称将为“ id”。

–luiscubal
13年2月12日在11:46

不。SAX是缩写,而Id不是。

–nalply
13年2月14日在19:18

您在C#中使用Id是正确的(通常在.NET中使用Id),但是出于另一个原因。规则是将2个字母的首字母缩写词(例如IPAddress)的所有字母都大写,而仅将较长的首字母缩写词的首字母大写(例如您提供的XmlDocument的示例)。但Id和Ok是该规则的例外,专门提到。有关完整的摘要,请参见“大写字母约定”文章的“大写字母缩写规则”部分。但是,即使Microsoft违反了该规则(例如DbConnection与DBNull)

– Allon Guralnek
13年2月14日在21:29

#2 楼

一致性为王;选择一个或另一个,但是要在任何地方都一致地执行。一)。

因此,有时会使用两个大写字母,但是ID实际上只是一种ID验证形式。

评论


如果计算机程序尝试访问我的ID,我将不喜欢它。


13年2月7日在18:17

userIdOfSender

– Sean McSomething
13年2月7日在18:39

@SeanMcSomething:哎呀。 SenderUserId

–罗伯特·哈维(Robert Harvey)
2013年2月7日在18:41



尽管我同意您的看法,但“ Id”是我了解混乱原因的首选方式:在日常对话中,我们实际上将其说成是缩写,例如“我能看到您的身份证吗?”

– 500-内部服务器错误
13年2月7日在23:08



看看骆驼案中的其他首字母缩写词。有SoapProtocol,而不是SOAPProtocol。 ID是身份证明文件的缩写,所以我不明白为什么在骆驼案中以特殊方式对待它。就是说,与程序中不一致使用的userId和userID相比,我更希望使用一致的userID。

–尼尔
13年2月8日在10:20



#3 楼

TL; DR:在.NET类库的上下文中,Microsoft建议您使用ID。这有点违反直觉,因为这是一个允许/推荐使用的缩写的罕见示例(通常不赞成使用缩写)。定义明确的命名准则。他们经过深思熟虑,对各种问题进行了许多解释-实际上,每个开发人员都应花一些时间阅读整个设计指南部分。
首字母缩略词的经验法则是:两个字母首字母缩写词,您倾向于将它们保持大写(在适用Pascal大小写的情况下),例如IOStream可能是一个类的名称。对于较长的首字母缩写词,请将其余的首字母缩写小写,例如XmlDocumentHtmlParser。实际上,这几乎是一个明确的规则(一个单词的结尾和下一个单词的开始没有混淆,除非您将两个字母的首字母缩写链接在一起),并且很快就习惯了。
所以,是是ID还是ID?嗯,根据Microsoft的说法,可能不是您所想:

缩写词与缩写词有所不同,因为缩写词会缩短一个单词。例如,ID是ID的缩写。通常,库名称不应使用缩写。
标识符中可以使用的两个缩写是ID和OK。在以Pascal大小写的标识符中,它们应显示为Id,然后单击确定。如果将其用作驼峰式标识符中的第一个单词,则它们应分别以id和ok出现。几年前(约3.0 / 3.5),类库的总体命名趋势从ID变为ID。

评论


这是我通常遵循的准则。由于id是缩写而不是首字母缩写,所以我总是喜欢使用'Id'。

–托比
13年2月8日在14:51

我使用ID的原因是,它违反了约定,并以独特的形式脱颖而出,我对此表示讽刺:)

– RhysW
13年2月8日在15:17

我认为微软错了。 ID。是身分证明文件的缩写,不代表身分证明。 (在学上,首字母缩写很明显。)

– Tom Hawtin-大头钉
13年2月10日在1:42

@ TomHawtin-tackline您提出了一个有趣的观点,尽管我怀疑这取决于上下文。诸如Person对象上的IDNumber属性之类的东西很有意义,但是对于VehicleId来说,它是“车辆身份文档”还是“车辆标识符”?在程序设计上下文中,标识符是唯一标识一个实例的任何事物的通用名称,我认为在这里更适用。

–丹尼尔B
13年2月11日在7:15

@DanielB在计算机语言中,即使是SQL,“标识符”通常也指名称,例如列名。通常,它缩写为“ ident”。车辆是一个有趣的示例,因为已经建立了VIN方案(车辆识别号)。在典型的编程环境中,实体的“文档”是数字(甚至可能是不可伪造的能力)。

– Tom Hawtin-大头钉
13年2月12日在2:11

#4 楼

我在一些编码约定的文档中读了一个很好的解释。应始终将CamelCase用作首字母缩写词和缩写,因为它更容易区分单词边界(比较XmlIdWriterXMLIDWriter)。

评论


这是区分单词边界的一个更好的主意:实际的单词边界! xml_id_writer。

–卡兹
13年2月7日在23:01

@Kaz好吧,du!但是,CamelCase传统上在某些语言中使用,在这种情况下使用下划线看起来不太合适。如前所述,一致性为王。

– kgilden
13年2月8日在10:38



仅仅因为某些语言的核心库使用CamelCase并不是一致性,而是一致性。

–卡兹
13年2月8日在19:00

@Kaz:与代码约定相比,您在商店中的战斗更大。

–罗伯特·哈维(Robert Harvey)
13年2月13日在16:22

#5 楼

正如我们在JavaScript的默认函数getElementById()中所看到的;
Id以驼峰式书写方式写成。示例:user_id

如果命名不带任何下划线的var来区分不同的单词,请使用'Id'。示例:userId

如果单个单词变量应为小写,如果多个单词var请使用小写的Camel。示例:thisIsExample

但是我强烈不建议在CAPS中全部使用“ ID”,因为我们通常使用所有大写字母来定义常数。

评论


在您的第三段中,您的示例似乎与您的文字不匹配?

–ruakh
13年2月8日在17:33

@ruakh thanx ..已更正..

– Sukrit Gupta
13年2月11日在10:31

除了XMLHttpRequest,encodeURIComponent等。

–叶提
20年8月25日在16:27

#6 楼

首先,避免使用缩写。

第二,如果该缩写非常出名,我建议使用驼峰式大小写。

那是因为您不需要考虑它的含义。只是当作普通单词来对待