頭字語を使用したJava命名規則[終了]


218

次のJavaクラスの正しい名前は何ですか: DVDPlayerまたはDvdPlayer


93
頭字語は嫌いです。DigitalVersatileDiscPlayer前進する方法です。
トムホーティン-タックライン

7
ジョークをトムに+1します。「正しい」が「標準」または「最も典型的な」として再解釈される場合、この質問は役に立ちます。受け入れられた答えは素晴らしいです!
Jon Coombs、

6
私にとって、そのような頭字語を単一の単語として考えることは理にかなっており、そのため、私は慣例に従って使用しますDvdPlayer
Daniel

7
スタイルガイドには、「省略形が長いクラス名の一部である場合、その省略形を単語として書式設定する」と記載されています。、そうDvdPlayerする方法です。(そして、トムにとって、「単語全体を使用し、省略形が長い形式よりも広く使用されていない限り、省略形の使用は避けてください。」そして「DVD」は「デジタル多用途ディスク」よりも広く使用されていると思います:-)
aioobe

あなたは確かに「ディスカッション」を意味しましたね?:)
Ville Oikarinen

回答:


237

答えはJavaにはこれに対する単一の標準がないということですので、.NET Framework設計ガイドラインでこれが指定されていることに注意したいと思います。

話題から外れると非難する前に、Javaと.NET Frameworkのクラス命名ガイドラインは非常に似ているため、.NETガイドラインは説得力のあるリファレンスとして役立ちます。

一般的なルール

どちらのガイドラインでも、頭字語が広く知られ、よく理解されている場合にのみ頭字語を使用することを推奨しています。DVDまたはXMLはこの優れた例です。すぐに認識できますが、拡張バージョンの認識には少し時間がかかります。

略語

.NET Frameworkガイドラインでは、識別子に2つの一般的な略語「ID」と「OK」を使用する場合があることを除いて、略語を使用しないことをお勧めします(頭字語ではありません)。省略形を使用する場合Id、キャメルケース識別子の最初の単語(PascalCase識別子とは対照的)を除いて、常に大文字と小文字が混在します。

Javaでは、この規則はたまにしか守られません。見てくださいスペルを混合する方法で、getIDかつgetIdJCLであるが。(そのページを途中までスクロールします)。ただし、Java 8バージョンでは、getIdがますます使用されており、PascalCaseの規則が今日では好まれています。可能な場合は、省略形を完全に避けることをお勧めします。

短い頭字語

.NET Frameworkガイドラインでは、「IO」のような2文字の頭字語は、両方の文字で同じ大文字にする必要があると述べています。したがって、PascalCase識別子(クラス名など)の場合はDBRate、キャメルケース識別子(ローカル変数など)の場合はが得られioChannelます。

これは間違いなくJavaでも一般的な慣習のようです。

長い頭字語

.NET Frameworkガイドラインでは、キャメルケース識別子の最初の単語を除いて、PascalCaseとキャメルケースの識別子には3文字以上の頭字語では大文字と小文字を混在させることを推奨しています。したがって、クラス名の場合はXmlDocumentローカル変数に名前を付けることができますhttpRequest

この規則は、Javaでは常に守られているわけではありません。4文字の頭字語では通常、大文字と小文字が混在するように見えますが、JCLでも3文字の頭字語については一貫性がありません。それらのほとんどは、「URL」、「XML」、「SQL」、「DOM」のようにすべて大文字のように見えますが、「Jar」のようないくつかの例外があります。

結論

Javaの場合:

4文字以上の頭字語の場合は、大/小文字混合を使用してください。標準ライブラリはこれを行い、それはちょうど理にかなっています。

3文字の頭字語の場合は、JCLのようにすべて大文字を使用するか、.NET Frameworkのように大文字と小文字を混在させることができます。いずれにせよ、一貫している。

2文字の頭字語の場合は、すべて大文字を使用します。

2文字の省略形の場合、Javaには実際には標準がありませんが、他の名前との一貫性によってすべての大文字の見栄えがよくなる場合を除き、大文字と小文字を混在させることをお勧めします。


11
よく入れて、素晴らしい努力!
Eliran Malka 2013

1
3文字と2文字の頭字語のCAPSが一貫していないことを除いて、私はこれが好きです。(たぶん私は純粋主義者ですが、実用的な理由で受け入れられた答えを参照してください。さらに、混乱要因があります。)
Jon Coombs

1
@JCoombs:まあ、2文字の不一致はIpAddress多くの人にとってひどいものに似ています。個人的には、Javaコードを記述する必要がある場合、3文字の頭字語を大文字と小文字を混在させて使用し、2文字だけを特殊なケースとして残しています。
Kevin Cathcart

5
クラス名に隣接する2文字の頭字語が複数ある場合はどうなりますか?あなたが何をしても、それは「間違っている」ように見えます-USGFCharset、UsGfCharset、US_GFCharset ...
Kevin

3
本当に良い答えです。しかし、個人的には、頭字語の長さと略語であるかどうかに応じて異なる名前を付けるという.NETガイドラインの考え方は好きではありません。頭字語の長さを実際に気にし、チェックするのは誰ですか?それとも略語なら?命名には、包括的なルールを使用します。問題は、選択したルールとは異なる規則のサードパーティライブラリを使用するときに発生します。
Amani Kilumanga 2016

98

「正しい」答えはありません。他のツールをより効果的に使用するための一連のプラクティスと規則。

したがって、私は好むDvdPlayer。EclipseではCtrl+ Shift+ + できT、各単語の最初の文字でクラスを選択できるため、より便利です。

代替テキスト


19
これは便利な日食のヒントです。ありがとう!
PeterPerháč2010

1
(+1)良いヒント。それが私のための質問に答えます:-)
Asaf

2
そのクラスを見つけるには、単に「SIO」で十分です。
finnw

7
これはEclipseの他の場所でも機能します-たとえばオートコンプリート。「myDvdCoverImage」という名前のメソッド/変数がありますか?-mDCI Ctrl + Spaceを入力するだけ
ティーボット

3
また、sysout Ctrl + Spaceなどのいくつかのショートカットがすでに設定されており、System.out.printlnを提供します。(try)と(for)についても同じ
medopal

50

どちらも野生で使用されているのを見てきましたが、SunはそのDVDPlayerスタイルを好むようです。DvdPlayerただし、のように複数の頭字語が連続している場合でも、単語の境界がどこにあるかは明らかなので、私はを好みHTTPURLConnectionます。


3
この方法で入力する方が高速です。
Ates Goral 2011

6
「DVDPlayer」は単語の境界をより明確にすると思います。「DVD」は単語ではありませんが、「DVD」は「Digital Versatile Disc」の頭字語です。したがって、「DVDプレーヤー」の実際の単語境界は「D」、「V」、「D」、および「P」にあります。
グレッグブラウン

18
@GregBrown:DVDは穴の開いたディスクです。フルネームを知っている人以外は誰もそれを気にしません。また、DvdPlayerを使用する方がはるかに実用的です。
イゴールロドリゲス

4
@GregBrown:実際には、少なくともEclipseではより実用的です。キャメルケースの認識は頭字語で苦痛です。つまり、DvdPlayerでは、「DP」と入力してCtrl + 1を押し、DvdPlayerを選択する選択肢を取得できますが、 DVDPlayerを使用していた場合は、「DVDP」と入力する必要があります。そして、それが長くなると、さらにいらいらします。コードにUNESCOConnectorを含めたくありません。とにかくそれは選択の問題です。
Igor Rodriguez

21
別の良い例はHTTPSIDです。つまり、HTTP SIDまたはHTTPS IDを意味します...したがって、意味をよりよく説明するために、それぞれHttpSidまたはHttpsIdと記述する必要があります。
Oz Edri 2016

37

次のようにして、クラスの個々のインスタンスを定義します。

Catalogue catalogue;
Person person;

したがって、を使用しDVDPlayerた場合、そのインスタンスを何と呼びますか?dVDPlayer?したがって、DvdPlayerクラス名を選択するので、インスタンスにのような名前を付けることができますdvdPlayer


16
何が問題になっていDVDPlayer dvdPlayer;ますか?
ジャズ14

9
@DerFlatulator何が悪いのですか?どのように来たとしてもdvdPlayer、戻ったときにが返ってきますDvdPlayer
maaartinus

5
@DerFlatulator:UpperCamelCaseからlowerCamelCaseに変換するときの自動化の問題です:sniber_caseへのHibernateマッピングを自動化するときに問題が発生しましたDvdPlayer -> dvd_playerが、DVDPlayer -> d_v_d_playerです。DVDPlayerをdvd_playerに自動化する方法はありません。
pdem

3
@DerFlatulator:大丈夫、返信ありがとう、この場合はうまくいきました。しかし、私はまだ「DvdPlayer」表記に確信があります。DVDRPGPlayerはどうですか?それはdvdrpgPlayerではなくdvdRpgPlayerに変換する必要があります。
pdem

2
また、ゲッターとセッターを検討してください 。たとえば、JSP ELと一緒に使用すると(たとえば)、getDvdPlayer()よりもうまく機能します。また、ゲッターに頭字語で小文字を使用して名前を付ける場合は、一貫性と予測可能性のためにクラス名を同じに保つことが最善です。getDVDPlayer()foo.dvdPlayer
daiscog 2018

33

JavaSEクラス、Apache Commons、Springの例:

  • HttpURLConnection
  • HTTPAddress
  • UrlPathHelper
  • AopProxy
  • ISBNValidator

だから-それは本当に重要ではありません。


3
同意した。コードベースに一貫性を持たせてください。
JARC、2010年

2
これは大した問題ではありませんが、私はそれが問題ではないとは言いません。他の誰もがそれらに従うことについて一貫しているわけではないにしても、一部の使用は、一般的に好ましい標準を非常に役立ちます。
Jon Coombs、

私が好むはずですSRS以上SoftwareRequirementSpecification
Shantaram Tupe


10

他の人が示したように、それはプロジェクト間で異なるスタイルのものです。GuavaやGWTなどのGoogleプロジェクトは、このDvdPlayerスタイルを好みます。

https://google.github.io/styleguide/javaguide.html#s5.3-camel-case


以下のためのより一般的なGoogleのコンベンションリンクDvdPlayerスタイル:google-styleguide.googlecode.com/svn/trunk/...
スタンKurdziel

1
答え内のリンクはに移動したgwtproject.org/makinggwtbetter.html#codestyle @StanKurdzielをし移動した言及リンクgoogle.github.io/styleguide/javaguide.html#s5.3-camel-case
イェルーンWiert Pluimers

8

sun java docsから:

クラス名は名詞であり、大文字と小文字が混在する大文字の各内部単語の最初の文字でなければなりません。クラス名はシンプルでわかりやすいものにしてください。単語全体を避け、頭字語や略語は使用しないでください(略語がURLやHTMLなどの長い形式よりもはるかに広く使用されている場合を除きます)。


14
それはそれが大文字であるかキャメルケースであるかどうかについて本当に何も言っていません。
DD。

@DD。「はるかに広く使用されている」と思うのは、DVD、MRI、
MAGA

3

DVDPlayer標準ですが、DvdPlayer珍しいことではありません。

あなたはしばしば見ないgetId。これはおそらく、IDが「ID」の短縮形であると考えているためです。これは、実際にはアイデンティティドキュメントのイニシャルです。

HttpURLConnection多くの場合、混合表記の例として示されています。ただし、URLでプロトコル名として使用される「http」は小文字である必要があります(大文字が受け入れられることがよくあります)。


2
これは本当に標準ではないと思いますが、おそらく最も一般的です。
b.roth

これは、Sun Java Coding Standard、IIRCに含まれています。JLSにはありませんが。
トムホーティン-タックライン

7
HyperTextTransferProtocolUniformResourceLocatorConnection
flybywire

2
ほとんどの人がIDを識別子の省略形として使用していると思います。つまり、データベースでは、テーブルIDはIDドキュメントのテーブル識別子を参照しています。
DD。

9
DVDPlayerは間違いなく標準ではありません。JDKでさえ、これに対する彼らのアプローチにかなり一貫性がありません。
Kevin Bourrillion、2010

0

「正しい」というのはなく、ここでの設定のみです。

Sunは、「URL」と「HTML」を含むクラスの命名方法に一貫性がありますが、Javadocでは、すべて大文字とキャメルケースの両方を使用するHTTPを使用しています。

個人的には、DvdPlayerを使用します。


URLのHTTPプロトコル名は小文字で書く必要があると思います(ただし、ブラウザでは大文字で受け入れられる場合があります)。
トム・ホーティン-
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.