1

私たちは OSGi で大きなプロジェクトを行っており、いくつかのコモンズ モジュールを追加しています。アーティファクトの命名についてはいくつかの議論があります。

したがって、モジュールに名前を付けるときの1つの可能性は、たとえば次のとおりです。

cmns-definitions(一般的な定義について)、もう 1 つはcmns-definition、さらにもう 1 つはcmns-defです。これは、パッケージ名にも影響を与えます。xx.xxx.xxx.xxx.xxx.commons.definitionsに変更するcmns-defと になります xx.xxx.xxx.xxx.xxx.commons.def

このパッケージ内には、システム全体で使用される列挙型やその他の定義などのクラスがあります。

cmns-definitionsパッケージ内の定義は 1 つだけではないので、私は個人的に傾いています。java.utilたとえば、ユーティリティが 1 つしかないことを指摘する人もいます。それでも、私にとってjava.util略語です。これは、 Java ユーティリティまたはJava ユーティリティを意味します。で同じことが起こりcommons-langます。

パッケージの名前は?なぜこの名前を選んだのですか?

  1. cmns-definitions
  2. cmns-definition
  3. cmns-def

おまけの質問: のような名前を付ける方法はcmns-exceptions? そう名付けています。名前を付けcmns-xcptますか?

編集:

確認または矛盾することを期待して、私はこれについて私自身の考えを投げかけています. できれば、してください。

私が思うに、何かに名前を付ける背景には、その中身を理解しやすくするためです。または、Peter Kriens によると、覚えやすくし、パターンを介してプロセスを自動化できるようにすることです。どちらも有効な引数です。

私の推論は、パターンに関して次のとおりです。

1) 実証が行われ、それが業界でよく知られている場合は、そのネーミングに従ってください。
例:「機能」はこれに関するケースです。cmns-features というモジュールがあります。これは、このモジュールに多くの機能があるということですか? いいえ、「Apache karaf の "features" ファイルを実装するモジュール」という意味です。
「コモンズ」とは、業界で広く受け入れられている「コモンズ」を具体化したものです。「よくある」という意味ではありません。「共通コード」という意味です。

たとえば、モジュール名として extr-commons が表示されている場合、extr (この場合は抽出) の共通コードが含まれていることがわかります。

2) モジュール内の多数のクラスが協力して、全体に明確な「唯一無二」の意味を与える場合は、単数形を使用して名前を付けます。

モジュールの大部分はここに含まれています。何かに cmns-persistence-jpa という名前を付けた場合、内部のどのクラスも協力して cmns-persistence-api の jpa 実装を提供することを意味します。内部に 2 つの実装があるとは思いませんが、実際には無数のクラスが集まって 1 つの実装を構成します。私にはクリスタルクリアです。いいえ?

3) クラスのグループ化が類縁性によってクラスを集めることのみを目的として行われるが、クラスが無目的に連携しない場合は、複数形を使用します。

cmns-definitions (システム全体で使用される列挙型) の例を次に示します。

別の方法として、略語を使用することで問題を回避できます。たとえば、cmns-def は人間の読み手によって cmns-definitions に「解釈展開」されることもあります。多くの人は、xxxx-utility を意味する "xxxx-util" も使用しています。

さらに、複数形を意味する名前を使用して、物事をまとめるための 3 つ目のオプションを使用できます。「api」という言葉が頭に浮かびますが、「pack」のように何かを複数形にする言葉なら何でも構いません。

これらのケース (3) へのサポートは、commons-collections (複数形を使用)、commons-dbcp (省略形を使用)、commons-lang (再び省略形) などのよく知られたモジュールと、api を使用してクラスをアフィニティーによってパックするものです。

apache から:
commons-collections -> 最も重要な Java アプリケーションの開発を加速する多くの強力なデータ構造
commons-lang -> java.lang API 用のヘルパー ユーティリティのホスト
commons-dbcp -> いくつかのデータベース接続プールのパッケージ

4

3 に答える 3

2

「それはただの名前です...」

私の長いキャリアの中で、これらの単なる名前が生産性に大きな違いをもたらす可能性があることを発見しました. 一貫性があり、名前に覚えやすく、プロセスの自動化に使用できるパターンを使用している限り、 definitionsdefinition、またはdefを使用しても違いはないと思います。一貫した命名スキームに基づくビルドは、その場しのぎで識別可能なパターンのない「見栄えのする」名前を使用したビルドよりも、作業がはるかに簡単です。

パターンを使用すると、名前が短くなる傾向があります。現在、これらの名前で作業している人々は、通常、これらの名前で多くの時間を過ごしました. したがって、読みやすさはニーモニック値ほど重要ではありません。3文字や4文字の略語は意外と威力があることがわかりました。それらがうまく機能する理由の 1 つは、可能な略語が 1 つしかないのに対し、長くすると多くの候補があることです。

とにかく、最も重要な部分は全体的な一貫性です。幸運を。

于 2012-10-04T07:26:35.863 に答える
0

definitions(またはdefまたはdefinition) は、読者にとって意味がないため、悪い名前です。あなたはオブジェクト指向の世界にいます (私はそう思います) - その慣習と原則に従うようにしてください。Maven のモジュールは、モジュールに含まれる最大の「抽象化」にちなんで命名する必要があります。「定義」は形式であり、意味ではありません。

FileUtilitiesあなたの質問は、「どちらのクラス名が優れているか」に似ていFileUtilsます。答え: ありません。

于 2012-10-03T14:48:13.417 に答える
0

基本的に、定義と例外で行うことは、他のモジュールにある種の API を提供することです。そこで、定義と例外を組み合わせて、それにインターフェースを追加することを提案します。その場合、すべて cmns-api と呼ぶのが理にかなっています。通常は短い単数形の名前を好みますが、単なる名前なので自由に決めることができます。

于 2012-10-04T06:15:16.067 に答える