変数の名前はIdまたはIDですか?[閉まっている]


126

これは少し面倒ですがId、次のように使用する人もいます。

private int userId;
public int getUserId();

および他の使用:

private int userID;
public int getUserID();

これらの1つは他よりも良い名前ですか?どうして?大規模なプロジェクトでは、これが非常に一貫性のない形で行われるのを見てきました。私がほとんどの人が慣れ親しんでいる標準を設定する場合はどうなりますか?従来の標準はどれですか?


40
重要なのは一貫性です。ラクダの場合でも、アンダースコアでも、その他の場合でも。一貫してください。

38
お使いの言語のXML APIを見て、どのように機能するかを確認してください。Javaの名前のようなクラスSAXParserDOMException、.NET名のクラスが好きですXmlDocument。それに基づいて、Javaでは「ID」、C#では「Id」と言います。
ルイスキューバル

1
しかし、慣例により、大文字の識別子は静的フィールドにJavaで使用されるため、ベースフィールドの「ID」名は最適な名前ではありません。そして一貫性...が来る
ダニューブセーラー

8
あなたは、変数に名前を付けるだろうEGOSuperEGO?そうは思いませんでした。;)
小次郎

4
何?!一貫性?激怒戦争はどこですか?!それだけです、私はここで神聖なラクダケース構文の炎の番人を指名します。また、退屈して奇妙なことをする猫がいない限り、トイレットペーパーを上から転がしたいのは正しいことです。猫の飼い主。なぜ私がそれを命じるのか分かりません。トイレットロールの方向の神聖な炎の管理者であるボブは忙しいと思います。
エリックReppen

回答:


56

これらのケースで従うべき最も重要なルールは、一貫性です。他のすべての人と同じように行います。

たとえば、言語のXML APIを見て、どのように機能するかを確認してください。

SAXParserDOMExceptionなどのJava名前クラス、XmlDocumentなどの.NET名クラス。

それに基づいて、Javaでは「ID」、C#では「Id」と言います。

ただし、Java EE 6には@Id(というドキュメントを参照)という名前の注釈があるので、Javaは "Id"を単なる普通の単語と見なしているようです。


@Idは、変数名ではなく注釈クラス名を指します。間違った例。
13

3
SAXParserはSimpleAPIforXMLParser(またはSimpleApplicationProgramingInterfaceforExtesibleMarkupLanguageParser)である可能性があります(幸いではありません)。各大文字は単語の始まりです。したがって、Javaでも「Id」である必要があります
-user470365

2
@jwenting問題は、「id」が単語のように見なされるのか、2つの単語のように見なされるのかを見つけることです。@Idこれは単一の単語であるため、変数名は「id」になります。
ルイスキューバル

いいえ。SAXは頭字語ですが、Idはそうではありません。
nalply

8
IdC#(および.NET全般)での使用は正しいのですが、理由は異なります。ルールは、2文字の頭字語(例:)のすべての文字を大文字にし、IPAddress長い頭字語の最初の文字のみを大文字にしXmlDocumentます(例のように)。しかしIdOkこのルールの例外は、特に言及されています。完全な概要についてCapitalization Rules for Acronymsは、Capitalization Conventions記事のセクションを参照してください。しかし、Microsoftでさえその規則を破ります(例DbConnectionDBNull
アロングラネリック

110

一貫性が重要です。どちらかを選択しますが、どこでも一貫して実行します。

そうは言っても、キャメルケースに違反しないため、最初のバリエーションを好みます(そうすると、1つだけでなく、2つのスタイルルールを覚えておく必要があります)。

このために2つの大文字が使用されることがありますが、IDは実際には単なるID証明の形式です。


18
コンピュータプログラムが私のIDにアクセスしようとした場合、私はそれを好まないでしょう。
Blrfl


19
@SeanMcSomething:Ick。 SenderUserId
ロバートハーベイ

5
「Id」が混乱の原因を見つけるための好ましい方法であることに同意しますが、日々の会話では、「IDを確認できますか?」
内部サーバーエラー

3
キャメルケースの他の頭字語を見てください。SOAPProtocolではなく、SoapProtocolがあります。IDはIDドキュメントの略であるため、ラクダの場合に例外的な方法で処理する必要がある理由はわかりません。つまり、プログラムで一貫して使用されるuserIdとuserIDよりも一貫して使用されるuserIDを好むでしょう。
ニール

76

TL; DR: .NETクラスライブラリのコンテキストでは、IDを使用することをお勧めします。これは、許可/推奨される略語のまれな例であるため、直観に反します(略語は一般的に眉をひそめています)。

C#または.NETクラスライブラリの規則について話している場合、Microsoftにはかなり明確に定義された命名ガイドラインが用意されています。よく考えられており、さまざまな問題について多くの説明があります。実際、すべての開発者は、設計ガイドラインのセクション全体を読むのに少し時間をかける必要があります。

頭字語に関しては、大まかなルールは次のとおりです。2文字の頭字語の場合、大文字を使用する傾向があります(Pascalの場合が該当します)。たとえばIOStream、クラスの名前になります。頭字語を長くするには、頭字語の残りの部分を小文字にします(例:XmlDocumentまたは)HtmlParser。これは実際にはほとんど明確なルールであり(2文字の頭字語を連鎖させている場合を除き、1つの単語が終了して次の単語が始まる場所について混乱はありません)、すぐに慣れます。

だから、それはIDですか、IDですか?まあ、Microsoftによると、それはあなたが考えるものではないかもしれません:

頭字語は、異なる略語略語は、単一の単語を短縮することをインチ たとえば、IDidentifierの省略形です。一般に、ライブラリ名には略語を使用しないでください。

識別子で使用できる2つの略語はIDとOKです。Pascalでケース化された識別子では、IdおよびOkとして表示されます。キャメルケース識別子の最初の単語として使用する場合、それぞれidおよびokとして表示されます。

逸話的に、この区別がガイドラインに現れ始めたのは実際にはわかりませんが、数年前(3.0 / 3.5前後)にクラスライブラリの一般的な命名傾向はIDからIDになりました。


1
これは私が通常従うガイドラインです。idは略語ではなく略語であるため、常に 'Id'を使用することを好みます。
トビー

私はIDを使用するので、慣例を破り、ユニークであると際立っており、その皮肉が好きです:)
RhysW

マイクロソフトは間違っていると思います。IDはIDドキュメントの初期主義であり、IDの短縮ではありません。(Pedantically、頭字語が発音可能である。)
トムホーティン- tackline

@ TomHawtin-tackline興味深い点を指摘しますが、文脈に依存していると思われます。PersonオブジェクトのIDNumberプロパティのようなものは非常に理にかなっていますが、VehicleIdが「Vehicle Identity Document」と「Vehicle Identifier」として読み取るのはどうでしょうか。プログラミングコンテキストでは、識別子はインスタンスを一意に識別するもののかなり一般的な単語であり、ここでより適切であると主張します。
ダニエルB

@DanielBコンピューター言語では、SQLでさえ、「識別子」は通常、列名などの名前を指します。通常、「ident」と略されます。VINスキーム(車両識別番号)が確立されているため、車両は興味深い例です。典型的なプログラミングコンテキストでは、エンティティの「ドキュメント」は数字です(偽造不可能な機能である場合もあります)。
トムホーティン-タックライン

15

コーディング規約のドキュメントで非常に良い説明を読みました。CamelCaseは頭字語と略語に常に使用する必要があります。これは、単語の境界を区別しやすいためです(と比較XmlIdWriterしてくださいXMLIDWriter)。


12
単語の境界を区別するためのさらに良いアイデアがあります:実際の単語の境界です!xml_id_writer
カズ

4
@カズまあ、当たり前!ただし、CamelCaseは一部の言語で伝統的に使用されており、このような状況でアンダースコアを使用するのはむしろ場違いに見えます。前述のように、一貫性が重要です。
ギルデン

1
一部の言語のコアライブラリが使用するという理由だけでCamelCaseを使用するのは、一貫性ではなく、適合性です。
カズ

3
@Kaz:コードコンベンションよりも、ショップでの戦いの方が大きいです。
ロバートハーヴェイ

2

JavaScriptのデフォルト関数getElementById();でわかるように。Idはキャメルケースで書かれています...

アンダースコアを使用する場合は、「id」を使用します。 例:user_id

アンダースコアなしで変数に名前を付ける場合は、「Id」を使用して、異なる単語を区別します。例:userId

単一の単語変数の場合は完全に小文字である必要があり、複数の単語の変数の場合は小文字のキャメルケースを使用します。例:thisIsExample

しかし、私たちは一般的に定数を定義するためにすべてのキャップを使用するため、CAPSの「ID」をすべてお勧めしません。


3番目の段落では、あなたの例はあなたのテキストと一致していないようです?
-ruakh

@ruakh thanx ..修正..
スクリットグプタ

0

まず、略語を避けます。

第二に、略語が非常によく知られている場合、ラクダケースを使用することをお勧めします。

それは、その意味を考慮する必要がないからです。ただ普通の言葉として扱う

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.