我对骆驼案有疑问。假设你有这样的首字母缩写:Unesco =联合国教育、科学及文化组织。

你应该写:联合国、国家、科学和文化组织

但是如果你需要写首字母缩写呢?喜欢的东西:

getUnescoProperties();

这样写对吗?getUnescoProperties()或getUnescoProperties();


当前回答

微软写的关于camelCase的一些指导方针是:

当使用首字母缩略词时,长度超过两个字符的首字母缩略词应使用Pascal大小写或驼峰大小写。例如,使用HtmlButton或HtmlButton。但是,只由两个字符组成的首字母缩写词应该大写,例如System。而不是System.Io。 不要在标识符或参数名中使用缩写。如果必须使用缩写,则使用驼峰大小写表示包含两个以上字符的缩写,即使这与单词的标准缩写相矛盾。

总结:

当你使用的缩写或首字母缩写只有两个字符长时,全部用大写; 当首字母缩略词超过两个字符时,第一个字符用大写。

因此,在您的特定情况下,getUnescoProperties()是正确的。

其他回答

要转换为驼峰case,还有谷歌的(近)确定性驼峰case算法:

Beginning with the prose form of the name: Convert the phrase to plain ASCII and remove any apostrophes. For example, "Müller's algorithm" might become "Muellers algorithm". Divide this result into words, splitting on spaces and any remaining punctuation (typically hyphens). Recommended: if any word already has a conventional camel case appearance in common usage, split this into its constituent parts (e.g., "AdWords" becomes "ad words"). Note that a word such as "iOS" is not really in camel case per se; it defies any convention, so this recommendation does not apply. Now lowercase everything (including acronyms), then uppercase only the first character of: … each word, to yield upper camel case, or … each word except the first, to yield lower camel case Finally, join all the words into a single identifier. Note that the casing of the original words is almost entirely disregarded.

在以下示例中,“XMLHTTP request”正确地转换为XmlHttpRequest, XmlHttpRequest则不正确。

从公认的答案中,对微软的建议有合理的批评。

根据字符数对首字母缩写/首字母缩写的处理不一致: playerID vs playerID vs playerIdentifier。 如果两个字母的首字母缩写出现在标识符的开头,是否仍然应该大写的问题: USTaxes vs USTaxes 区分多个首字母缩写的困难: 即USID vs USID(或维基百科的例子中的parseDBMXML)。

所以我会把这个答案作为公认答案的替代。所有首字母缩略词应一致对待;首字母缩写词应该像对待其他单词一样对待。引用维基百科:

...有些程序员喜欢把缩写当作小写字母来对待。

所以回复:OP的问题,我同意公认的答案;这是正确的:getUnescoProperties()

但我认为我在这些例子中得出了不同的结论:

美国税收→美国税收 玩家ID→playerId

所以,如果你认为两个字母的首字母缩略词应该像其他首字母缩略词一样对待,请投票给这个答案。

Camel Case是一种约定,而不是规范。所以我猜民意决定一切。

(编辑:删除这个问题应该由投票决定的建议;正如@Brian David所说;Stack Overflow不是一个“人气竞赛”,这个问题是“基于意见的”)

尽管许多人喜欢把首字母缩写词当作其他词来对待,但更常见的做法可能是把首字母缩写词全部大写(即使这会导致“可恶的”)。

请参阅此XML模式中的“EDXML” 请参阅此XBRL模式中的“SFAS158”

其他资源:

Note some people distinguish between abbreviation and acronyms Note Microsoft guidelines distinguish between two-character acronyms, and "acronyms more than two characters long" Note some people recommend to avoid abbreviations / acronyms altogether Note some people recommend to avoid camelCase / PascalCase altogether Note some people distinguish between "consistency" as "rules that seem internally inconsistent" (i.e. treating two-character acronyms different than three-character acronyms); some people define "consistency" as "applying the same rule consistently" (even if the rule is internally inconsistent) Framework Design Guidelines Microsoft Guidelines

免责声明:英语不是我的母语。但是我已经考虑这个问题很长一段时间了,特别是当使用节点(驼峰风格)来处理数据库时,因为表字段的名称应该是蛇化的,这是我的想法:

对于程序员来说,有两种“首字母缩写”:

自然语言,联合国教科文组织 在计算机编程语言中,例如tmc和textMessageContainer,通常以局部变量的形式出现。

在编程世界中,自然语言中的所有首字母缩略词都应该被视为单词,原因是:

when we programming, we should name a variable either in acronym style or non-acronym-style. So, if we name a function getUNESCOProperties, it means UNESCO is an acronym ( otherwise it shouldn't be all uppercase letters ), but evidently, get and properties are not acronyms. so, we should name this function either gunescop or getUnitedNationsEducationalScientificAndCulturalOrganizationProperties, both are unacceptable. natural language is evolving continuously, and today's acronyms will become words tommorow, but programs should be independent of this trend and stand forever.

顺便说一下,在投票最多的答案中,IO是计算机语言中的首字母缩写(代表InputOutput),但我不喜欢这个名字,因为我认为(在计算机语言中)首字母缩写只应该用于命名局部变量,而不是顶级类/函数,所以应该使用InputOutput而不是IO

除了@valex所说的,我想用这个问题的答案来概括一些事情。

我认为一般的答案是:这取决于你使用的编程语言。

升C

微软已经编写了一些指导方针,在这种情况下,HtmlButton似乎是命名类的正确方式。

Javascript

Javascript有一些首字母缩写的全局变量,并且它们都是大写的(但有趣的是,并不总是一致),下面是一些例子:

encodeURIComponent XMLHttpRequest toJSON toISOString

UNESCO是一个特殊的例子,因为它通常(在英语中)被读成一个单词,而不是一个首字母缩略词——像UEFA, RADA, BAFTA,不像BBC, HTML, SSL