web-dev-qa-db-ja.com

CamelCaseの頭字語

CamelCaseに疑問があります。次の頭字語があるとします:Unesco = United Nations Educational, Scientific and Cultural Organization.

書くべきです:unitedNationsEducationalScientificAndCulturalOrganization

しかし、頭字語を書く必要がある場合はどうでしょうか?何かのようなもの:

getUnescoProperties();

このように書くのは正しいですか? getUnescoProperties() OR getUNESCOProperties();

198
gal007

ガイドライン MicrosoftはcamelCaseについて次のように書いています。

頭字語を使用する場合、2文字以上の頭字語にはPascalケースまたはキャメルケースを使用します。たとえば、HtmlButtonまたはhtmlButtonを使用します。ただし、System.IOではなくSystem.Ioなど、2文字のみで構成される頭字語を大文字にする必要があります。

識別子またはパラメータ名に略語を使用しないでください。略語を使用する必要がある場合は、Wordの標準の略語と矛盾する場合でも、3文字以上で構成される略語にはキャメルケースを使用します。

要約:

  • 2文字の略語または頭字語を使用する場合は、すべて大文字にしてください。

  • 頭字語が2文字より長い場合は、最初の文字に大文字を使用します。

したがって、特定のケースでは、getUnescoProperties()が正しいです。

156
Apollo SOFTWARE

受け入れられた回答からの Microsoftアドバイス に対する正当な批判があります。

  • 文字数に応じた頭字語/頭文字の一貫性のない処理:
    • playerID vs playerId vs playerIdentifier
  • 2文字の頭字語を識別子の先頭に表示する場合、大文字にする必要があるかどうかの質問:
    • USTaxes vs usTaxes
  • 複数の頭字語を区別するのが難しい:
    • つまり、USIDusId(またはWikipediaの例ではparseDBMXML)。

そこで、この回答を受け入れられた回答の代替として投稿します。投票で決定できます。すべての頭字語は一貫して扱われる必要があります。頭字語は、他のWordと同様に扱う必要があります。 Wikipediaの引用

...一部のプログラマは、略語を小文字の単語として扱うことを好みます...

だから私は再:OPの質問、受け入れられた答えに同意します。これは正しいです:getUnescoProperties()

しかし、これらの例では別の結論に達すると思います。

  • US TaxesusTaxes
  • Player IDplayerId

2文字の頭字語を他の頭字語と同様に扱うべきだと思う場合は、この答えに投票してください。

キャメルケースは、仕様ではなく慣例です。だから私は一般的な意見のルールを推測します。

そして、既存のコードまたはマークアップで「人気のある」回答を検索する際に、受け入れられた回答が正しいかもしれません。

265
The Red Pea

まず、私は英語を母国語としないことを明確にする必要があります。したがって、英語の文法についての私の主張は単に間違っている可能性があります。そのようなエラーを発見したら、私に知らせてください、そして私は非常に感謝します。


頭字語のベストプラクティスは、頭字語をできるだけ避けることです。とにかく、頭字語UNESCOはフルネームUnitedNationsEducationalScientificAndCulturalOrganizationよりもよく知られているため、これは当てはまりません。

それから、UNESCOUnescoよりも理にかなっていると思います。なぜなら、単純に実生活のフォームに近いからです。 Word Unescoの実際の意味を理解するのに苦労しました。

別の例として、Arcについて考えてください。これは円の周りの曲線のように聞こえますが、Rustでは、これはAtomically Reference Countedを意味します。 ARCのように書かれている場合、少なくとも読者はWordが一種の曲線ではなく何かの頭字語であることを認識するでしょう。

現代のプログラムは、主に人間の読者向けに書かれています。次に、これらの命名規則は、人間の可読性ではなく機械加工や分析よりも。

この観点では、UnescoではなくUNESCOを使用することにより、何も得られないため、読みやすさが失われます。

それ以外の場合は、ほとんどの場合、最高の読みやすさのために プレーンな頭字語ルール(または慣習) で十分だと思います。

19
Eonil

getUnescoProperties()が最良のソリューションであるはずです...

可能であれば、純粋なcamelCaseに従ってください。頭字語がある場合は、可能であれば大文字にしてください。そうでない場合はcamelCaseに進みます。

通常、OOでは、プログラミング変数は小文字(lowerCamelCase)で始まり、クラスは大文字(UpperCamelCase)で始まります。

疑わしい場合は、純粋にcamelCaseにしてください;)

parseXMLは問題ありませんが、parseXmlcamelCaseです

XMLHTTPRequestXmlHttpRequestまたはxmlHttpRequestである必要があり、後続の大文字の頭字語を使用する方法はありません。すべてのテストケースで明確ではありません。

例えばこの単語をどのように読みますかHTTPSSLRequestHTTP + SSL、またはHTTPS + SL(それは何も意味しません...)、その場合はラクダケースの規則に従い、httpSslRequestまたはhttpsSlRequestに進みます。より明確。

14
luk_z

CamelCaseに変換するには、 Googleの(ほぼ)決定論的なCamel caseアルゴリズム :もあります。

名前の散文形式で始まる:

  1. フレーズをプレーンASCIIに変換し、アポストロフィを削除します。たとえば、「ミュラーのアルゴリズム」は「ミュラーのアルゴリズム」になります。
  2. この結果を単語に分割し、スペースと残りの句読点(通常はハイフン)で分割します。
    1. 推奨:Wordで一般的な使用法で従来のラクダケースの外観が既にある場合は、これを構成部分に分割します(たとえば、「AdWords」は「ad words」になります)。 「iOS」などのWordは、実際にはキャメルケースではありません。慣例に反するため、この推奨事項は適用されません。
  3. すべてを小文字(頭字語を含む)にし、次に次の最初の文字のみを大文字にします:
    1. …各キャメルケース、キャメルケースの上部、または
    2. ...ラクダの小文字を生成するために、最初の単語を除く各単語
  4. 最後に、すべての単語を単一の識別子に結合します。

元の単語の大文字小文字はほぼ完全に無視されることに注意してください。

次の例では、「XML HTTP要求」がXmlHttpRequestに正しく変換されていますが、XMLHTTPRequestは正しくありません。

11
serv-inc

Githubには airbnb JavaScript Style Guide があり、たくさんの星(現時点では〜57.5k)と acronyms に関するガイドがあります。

頭字語と頭字語は、常にすべて大文字にするか、すべて小文字にする必要があります。

どうして?名前は読みやすくするためのものであり、コンピューターのアルゴリズムをなだめるためのものではありません。

// bad
import SmsContainer from './containers/SmsContainer';

// bad
const HttpRequests = [
  // ...
];

// good
import SMSContainer from './containers/SMSContainer';

// good
const HTTPRequests = [
  // ...
];

// also good
const httpRequests = [
  // ...
];

// best
import TextMessageContainer from './containers/TextMessageContainer';

// best
const requests = [
  // ...
];
6
valex

現在、次のルールを使用しています。

  1. 頭字語の大文字:XMLHTTPRequestxmlHTTPRequestrequestIPAddress

  2. 略語のキャメルケース:ID[entifier]Exe[cutable]App[lication]

IDは例外です。申し訳ありませんが、本当です。

大文字が表示されている場合、頭字語、つまり各文字の個別の単語を想定しています。略語には文字ごとに個別の単語がないため、キャメルケースを使用します。

XMLHTTPRequestはあいまいですが、まれなケースであり、それほどあいまいではないため、大丈夫です。ルールよりもロジックが美しさよりも重要です。

3
user2992258

JavaScript Airbnbスタイルガイド これについて少し説明します 。基本的に:

// bad
const HttpRequests = [ req ];

// good
const httpRequests = [ req ];

// also good
const HTTPRequests = [ req ];

私は通常、先頭の大文字をクラスとして読むため、それを避ける傾向があります。結局のところ、それはすべて好みです。

1
Bryan Swagerty

ユネスコは特別なケースであり、通常(英語では)頭字語ではなく単語として読まれます-UEFA、RADA、BAFTAなど、BBC、HTML、SSLとは異なります

0
user1833431

また、大文字(HTML)または小文字(html)を使用して頭字語の読みやすさを優先しようとする別のキャメルケース規則がありますが、両方(Html)は避けます。

したがって、あなたの場合はgetUNESCOPropertiesと書くことができます。変数にはunescoProperties、クラスにはUNESCOPropertiesと書くこともできます(クラスの規則は大文字で始めることです)。

XML HTTP Requestという名前のクラスなど、2つの頭字語をまとめる場合、このルールは扱いにくくなります。大文字で始まりますが、XMLHTTPRequestは読みにくいため(XMLH TTPリクエストですか?)、XMLhttpRequestはキャメルケースの規則に違反します(XM Lhttpリクエストですか?)、大文字と小文字を混在させるのが最良のオプションです:XMLHttpRequest 、これは実際には W3Cが使用 です。ただし、この種類の名前を使用することはお勧めしません。この例では、HTTPRequestの方が適切な名前です。

ID/IDの公式の英単語はIDのようですが、頭字語ではありませんが、同じルールをそこに適用できます。

この慣習は世間ではかなり人気があるようですが、これは単なる慣習であり、善悪はありません。規則に固執し、名前が読めることを確認してください。

0
Jesús Carrera

免責事項:英語は私の母語ではありません。しかし、テーブルフィールドの名前をヘビ化する必要があるため、ノード(キャメルケーススタイル)を使用してデータベースを処理する場合は特に、この問題について長い間考えてきました。これは私の考えです。

プログラマーには2種類の「頭字語」があります。

  • 自然言語、ユネスコ
  • コンピュータープログラミング言語では、たとえば、tmc and textMessageContainerは、通常ローカル変数として表示されます。

プログラミングの世界では、自然言語の頭字語はすべてWordとして扱う必要があります。その理由は次のとおりです。

  1. プログラミングするときは、頭字語スタイルまたは非頭字語スタイルで変数に名前を付ける必要があります。したがって、関数にgetUNESCOPropertiesという名前を付けると、ユネスコが頭字語であることを意味します(そうでない場合はすべて大文字である必要はありません)が、明らかにgetpropertiesは頭字語ではありません。そのため、この関数にgunescopまたはgetUnitedNationsEducationalScientificAndCulturalOrganizationPropertiesのいずれかを指定する必要があります。両方とも受け入れられない。

  2. 自然言語は絶えず進化しており、 今日の頭字語は明日語になる 。しかし、プログラムはこのトレンドから独立し、永遠に続くべきである。

ちなみに、最も投票された答えでは、IOはコンピューター言語の意味の頭字語(InputOutputの略)ですが、頭字語(コンピューター言語)を考えるので、私は名前が好きではありませんローカル変数に名前を付けるためだけに使用する必要がありますが、トップレベルのクラス/関数なので、IOの代わりにInputOutputを使用する必要があります

0
xiechao06

@valexの発言に加えて、この質問に対する所定の回答をいくつかまとめておきたいと思います。

一般的な答えは、使用しているプログラミング言語に依存すると思います。

Cシャープ

Microsoft 書かれているHtmlButtonがこの場合のクラスに名前を付ける正しい方法であると思われるいくつかのガイドライン。

Javascript

Javascriptには頭字語付きのグローバル変数がいくつかあり、それらをすべて大文字で使用しています(ただし、面白く、常に一貫しているわけではありません)。

encodeURIComponentXMLHttpRequesttoJSONtoISOString

0
lante