15

次の場合の Java でのベスト プラクティスは何かを考えています。

プログラムに、別のパッケージに入れたいロジックがあります。

たとえば(私の現在のケース)、いくつかの統計を収集し、後でそれらをサーバーに送信するロジックです)。したがって、プロジェクトcom.example.projectの下にあるパッケージの名前はcom.example.project.statisticsになります。

パッケージ内にはいくつかのクラスがあります。この場合、StatisticsDispatcher (基本的にはイベントのコンテナーおよびマネージャー) と StatisticsEvent (統計に計算されるイベント) です。

問題は、どの命名規則を使用すればよいかということです。2 つのオプションが表示されます。

  1. 上記のStatisticsDispatcherStatisticsEvent 。クラス名はクラスが何をするかを明確にしますが、com.example.project.statistics.StatisticsEvent のように絶対名では少し冗長です。
  2. ディスパッチャーイベント。それはより短く、クラスの目的は com.example.project.statistics.Dispatcher のような絶対名から明らかですが、コードの後半では、これらの名前は他のパッケージのクラスとあいまいになる可能性があります。これらのクラスをファイルの先頭にインポートすると、"Dispatcher" や "Event" などのクラス名は非常に一般的であり、ファイルの途中では、それらが何に関連しているかは明らかではありません。

Javaパッケージとクラスの命名規則をグーグルで調べたとき、これについての言及は見つかりませんでした。残念ながら、最初のオプションが正しいと思いますが、パッケージ名とクラス名の冗長性が本当に好きではないので、他のプログラマーにこのようなケースをどのように解決するのか尋ねたいと思います。

前もって感謝します

4

3 に答える 3

13

I would prefer to be explicit (and perhaps verbose) to being concise (and perhaps ambiguous).

Your example re. Dispatcher / Event is a good one. If you're unlucky, you'll end up having to fully qualify each occurrence of these to resolve any ambiguities.

In such a scenario you'll end up either with a lot of verbose code, or restructuring your code such that conflicting classes don't co-exist (conflicts may actually act as an indicator that unrelated entities are co-existing, but that's another discussion)

于 2012-11-14T11:19:28.927 に答える
5

私は間違いなく最初のもの、つまり、StatisticsDispatcherとStatisticsEventを選びます。これは、DispatcherとEventという単語が単独で使用されると、多くのことを意味する可能性があるためです(特に、Java EEでは)。

于 2012-11-14T11:22:44.097 に答える
4

また、あいまいさの少ない名前を選ぶことも間違いありません。他のパッケージと競合する可能性のある名前を使用する:

  • コードを読む人間に問題を引き起こします。import「イベント」が表示された場合、それは一般的な Java ライブラリであり、これを解決する唯一の方法はステートメントを読み返すことだと思います。
  • IDE で問題が発生します。たとえば、Eclipse は、最も可能性の高いパッケージを "役立つように" 推測することがあります。リスト、要素、属性などは、存在さえ知らなかったパッケージからインポートされる可能性があります! そして、これをデバッグするのに驚くほど多くの時間を浪費する可能性があります。
于 2012-11-14T12:20:27.443 に答える