2011-09-22 13 views
9

パッケージ名をどのようにすべきか、どんなクラスにどのパッケージを入れるべきかはどのように決めるのですか?クラス、パッケージを整理する方法

私は常にクラスを追加/削除していますが、新しいパッケージが必要かどうかは分かりませんが、現在気付いていない既存のパッケージに追加する必要があります。

新しいパッケージを作成する際に一連のルールに従っていますか?

パッケージの機能を複製していないことをどのように知っていますか?これはちょうどプロジェクトに精通しているかどうかです。

任意のポインタをいただけれ。

+0

@Alex K:重複しているとは思わないです。あなたが指摘する問題は、パッケージがJavaでどのように機能するかについてですが、この問題はパッケージをより効果的に定義する方法です。 – helios

+0

@heliosあなたは正しいかもしれない –

答えて

11

クラスは1つのことを行う必要があります(Single Responsibility Principle)。

関連することを行うクラスは、同じパッケージに入れてください。あるパッケージ内のいくつかのクラスをより密接に関連付けることができたら、それらをサブパッケージにしてください!例えば

、私はこれらのクラスでプロジェクトを持っている場合:

  • GreetingInputWindow
  • GreetingDatabaseObject
  • GreetingDatabaseConnector

私はちょうどgreetingパッケージですべてを置くかもしれません。もし私が望むなら、GreetingInputWindowgreeting.uiパッケージに入れ、もう1つをgreeting.dbパッケージに入れます。など

2

私は間違っている可能性がありますが、パッケージングのコンベンションには厳しいルールはないと思います。

  • API
  • コントローラ
  • を報告
  • (cronジョブのための)データ(モデル)
  • ジョブ
  • :通常、私はその後

    com.mycompanynameとに分割して

  • サーブレット
  • utils

これらのクラスに適合しないクラスがある場合は、新しいパッケージを作成します。

+0

ええ、私は似たようなものを使っています。私はこれがコードを整理したままにしていることがわかりますが、これはあまり良い習慣ではないと思う人もいます –

14

私は強くなどcontrollersdata、同様に私は機能によってそれらをグループ化することを好む、ビューの実装上のポイントからパッケージを組織から落胆、それは、feature1で、feature2、機能が合理的に複雑であり、大きなを必要とする場合クラスの数、次に(そしてそのときだけ)上記のようなサブパッケージ、つまりfeature1.controllersfeature1.dataなどを作成します。

+2

michael667が説明しているIMOの利点は、ロギング設定をずっと簡単にすることです。私が自動車に関連するすべてを見たいのであれば、私は自動車パッケージにロギングを設定するだけです – IcedDante

関連する問題