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

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

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

getUnescoProperties();

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


当前回答

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

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

总结:

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

因此,在您的特定情况下,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

目前我正在使用以下规则:

首字母缩写的大写字母:XMLHTTPRequest, XMLHTTPRequest, requestIPAddress。 驼色表示缩写:ID[标识符],Exe[可切割的],App[应用程序]。

ID是个例外,抱歉,但这是真的。

当我看到一个大写字母时,我认为这是一个首字母缩写,即每个字母对应一个单独的单词。缩写并不是每个字母都有单独的单词,所以我使用驼峰格。

XMLHTTPRequest是模棱两可的,但这是罕见的情况,它并没有那么模棱两可,所以没关系,规则和逻辑比美观更重要。

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

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

升C

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

Javascript

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

encodeURIComponent XMLHttpRequest toJSON toISOString