web-dev-qa-db-ja.com

Javaパッケージ名のワード区切り記号の規則は何ですか?

パッケージ名に含まれる単語をどのように分ける必要がありますか?次のうち正しいものはどれですか?

  1. com.stackoverflow.my_package(アンダースコア)
  2. com.stackoverflow.my-package(ハイフン)
  3. com.stackoverflow.MyPackage(キャメルケース)

一般的な標準とは何ですか?

305
Jigar

公式の命名規則ドキュメントで規定されているものは次のとおりです。

パッケージ

一意のパッケージ名のプレフィックスは常にすべて小文字のASCII文字で記述され、トップレベルドメイン名の1つである必要があります。現在はcomedugovmilnetorg、またはISO規格3166、1981で指定されている国を識別する英語の2文字コード。

パッケージ名の後続のコンポーネントは、組織独自の内部命名規則によって異なります。このような規則では、特定のディレクトリ名コンポーネントが部門名、部門名、プロジェクト名、マシン名、またはログイン名であることを指定する場合があります。

  • com.Sun.eng
  • com.Apple.quicktime.v2
  • edu.cmu.cs.bovik.cheese

参照資料


特に、トップレベルドメインプレフィックスに続くものは、上記のドキュメントでは指定されていないことに注意してください。また、JLSは次の例を挙げてこれに同意します。

  • com.Sun.sunsoft.DOE
  • gov.whitehouse.socks.mousefinder
  • com.JavaSoft.jag.Oak
  • org.npr.pledge.driver
  • uk.ac.city.rugby.game

次の抜粋も関連しています。

場合によっては、インターネットドメイン名が有効なパッケージ名ではない可能性があります。これらの状況に対処するための推奨される規則を次に示します。

  • ドメイン名にハイフンまたは識別子で許可されていないその他の特殊文字が含まれている場合は、アンダースコアに変換します。
  • 結果のパッケージ名コンポーネントのいずれかがキーワードである場合、アンダースコアを追加します。
  • 結果のパッケージ名コンポーネントのいずれかが数字、または識別子の最初の文字として許可されていない他の文字で始まる場合は、コンポーネントの前にアンダースコアを付けます。

参照資料

218

3つすべてが規則ではありません。

com.stackoverflow.mypackageを使用します。

パッケージ名は、ラクダの大文字小文字、アンダースコア、ハイフンに続きません パッケージの命名規則

また、 Google Java St​​yle Guide はまったく同じ(つまりcom.stackoverflow.mypackage)規則を指定します。

5.2.1パッケージ名

パッケージ名はすべて小文字で、連続する単語は単純に連結されます(アンダースコアなし)。たとえば、com.example.deepspacenotcom.example.deepSpaceまたはcom.example.deep_space

Google Javaスタイルガイド:5.2識別子タイプ別のルール:5.2.1パッケージ名

212
bragboy

公式の命名規則はそれほど厳密ではなく、接頭辞(例ではcom)を除いて、ラクダケース表記を「禁止」しません。

しかし、私は個人的に大文字を避けます とハイフネーション、 偶数。 Bragboyも提案したように、com.stackoverflow.mypackageを選択します。

(ハイフネーション「-」はパッケージ名では無効です)

編集

おもしろい-言語仕様には、命名規則についても説明することがあります。

第7.7章固有のパッケージ名 では、大文字で構成されるパッケージ名の例があり(したがってCamelCase表記でも問題ありません)、ハイフォネーションをアンダースコア(「mary-lou」-> 「mary_lou」)およびアンダースコアを使用したJavaキーワードのプレフィックス(「com.example.enum」->「com.example._enum」)

パッケージ名の大文字の例は、 6.8.1パッケージ名 の章にあります。

16
Andreas_D

誰でもアンダースコア_を使用できます(大丈夫です)

誰もハイペンを使用しないでください-(その悪い習慣)

パッケージ名に大文字を使用しないでください(悪い習慣)

ここで「悪い練習」は技術的にあなたがそれを使用することを許可されていることを意味しますが、従来は書くのが良い方法ではありません。

ソース: パッケージの命名(docs.Oracle)

10
Himanshu Mori

パッケージ名の単語の連結は、ほとんどの開発者が行っていないことです。

次のようなものを使用できます。

com.stackoverflow.mypackage

参照 JLS名の宣言

1
CraUmm

アンダースコアは、パッケージ名では見苦しくなります。価値があるのは、名前が3語以上の場合、イニシャル(たとえば、com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo)を使用し、package-info.Javaでパッケージの目的を文書化します。

1
jpangamarca