TL;DR

技術的な観点(レイヤ)ではなく、機能ごとに必要なクラスをすべてまとめてパッケージにする構成。

なぜ必要か

レイヤでクラスをパッケージに分けると、2 つの欠点がある。1 つは、ある機能に属するクラスの全体像をつかみにくいことである。もう 1 つは、コードが汎用的で再利用される複雑なものになりがちなことである。そうしたコードは理解しづらく、変更の影響範囲も見えにくいので、他のユースケースを壊しうる。

仕組み

機能ごとにパッケージにまとめると、次の利点がある。

  • 見つけやすく、全体像をつかみやすい
  • 自己完結していて、他から独立している
  • コードがシンプルになる
  • テストしやすい

関連

出典