web-dev-qa-db-ja.com

Java 9モジュールに名前を付けるにはどうすればよいですか?

groupId = org.abcartifactId = myLibraryのライブラリがあるとします。モジュール名の推奨名は何ですか:myLibraryまたはorg.abc.myLibrary?命名スキームの公式ガイドはありますか?

26
ZhekaKozlov

しばらくの間、あなたの質問には2つの異なる意見がありましたが、モジュールシステムの開発中に、コミュニティは逆DNSアプローチに落ち着きました。

固有のモジュール名-リバースDNS

ここでは、モジュール名はグローバルに一意であることが前提となっています。その目標を考えると、そこに到達する最も実用的な方法は、パッケージの命名戦略に従い、メンテナーが関連付けられているドメイン名を逆にします。 モジュールシステムの状態はこれを示しています

パッケージ名などのモジュール名は競合してはなりません。モジュールの命名に推奨される方法は、パッケージの命名に長い間推奨されてきたreverse-domain-nameパターンを使用することです。

さらに、マーク・ラインホールド writes

すべてのモジュールには、インターネットのドメイン名の逆規則に従って名前を付けることを強くお勧めします。モジュールの名前は、エクスポートされた主要なAPIパッケージの名前に対応している必要があります。これも、その規則に従う必要があります。モジュールにそのようなパッケージがない場合、またはレガシーの理由で、エクスポートされたパッケージの1つに対応しない名前が必要な場合、その名前は、少なくとも作成者が使用したインターネットドメインの逆の形式で始まる必要があります。関連しています。

これはかなり明確で、他のJavaエキスパート Stephen Colebourneのような によって共有されています。

モジュールはアーティファクトよりも大きい

しばらく(2016年の初め)、ラウンドを行う別の推奨事項がありました。 JDKチームは、「モジュールはモジュールを定義するアーティファクトよりも抽象的であるため」、モジュール名が一意である必要はない可能性があると述べました。 Mark Reinholdの書き込み

プロジェクトまたは製品の名前で始まるモジュール名を選択してください。逆のドメイン名で始まるモジュール(およびパッケージ)名は競合する可能性は低くなりますが、不必要に冗長であり、最も重要でない情報(たとえば、comorg、またはnet)、そしてオープンソースの寄付や企業買収などの外因性の変更(例:com.Sun.*)。

逆ドメイン名のアプローチは、Javaの初期の頃には理にかなっており、時折発生する競合に対処するのに十分なほど洗練された開発ツールがありました。現在、このようなツールがあるため、プロジェクト名または製品名で始まる短いモジュール名とパッケージ名を読みやすくすることは、逆のドメイン名で始まる煩雑な冗長性よりも望ましいです。

また、ドメインを含まないモジュール名を使用すると、同じ名前(もちろん、同じパブリックAPIを実装する)である限り、そのモジュールを別の実装と交換できます。

上記のメールに、ラインホールドは意見の変化を文書化します。

一部の人々はより短い、プロジェクト指向の名前を好むかもしれません、そしてそれらは単一の組織の外で日の光を見ることは決してない、限られたプロジェクトで使用することで問題ありません。ただし、将来オープンソースになる可能性が少しでもあるモジュールを作成する場合は、最初に逆DNS名を選択するのが最も安全な方法です。

概要

陪審が出ており、意見を公にしたすべての人が、パッケージと同様にリバースDNSに同意します。

32
Nicolai

Mark Reinholdから "公式" answer を受け取ったと思います。

すべてのモジュールには、インターネットのドメイン名の逆規則に従って名前を付けることを強くお勧めします。モジュールの名前は、エクスポートされた主要なAPIパッケージの名前に対応している必要があります。これも、その規則に従う必要があります。モジュールにそのようなパッケージがない場合、またはレガシーの理由で、エクスポートされたパッケージの1つに対応しない名前が必要な場合、その名前は、少なくとも作成者が使用したインターネットドメインの逆の形式で始まる必要があります関連しています。

3
ZhekaKozlov