パッケージ結合原則

最後ー。

ADP・SDP・SAPの3つ

  • ADP:非循環依存関係の原則

パッケージの依存関係は循環してはならない。

既存の循環関係を断つには、
適切なパッケージ内のクラスにDIPを用いて依存関係を反転させるか、
新たにパッケージを追加し、循環の原因となっているクラスをそのパッケージに移動する。

パッケージ構造はシステムの変化に伴い成長する。

  • SDP:安定依存の原則

安定する方向に依存すべきである。

内側結合度Ca = このパッケージ内のクラスに依存するクラス数
外側結合度Ce = パッケージ外のクラスに依存するパッケージ内のクラス数
不安定度I = Ce / (Ca + Ce)
安定している:Iが小さい

あるパッケージの不安定度は、そのパッケージが依存するパッケージの不安定度よりも大きくなるべきである。
依存されるパッケージは、それに依存するパッケージよりも安定しているべきである。

変更が容易なパッケージは、安定したパッケージに依存されてはならない。
このに反する依存関係を改善するには、DIPを用いて依存関係を反転させる。

  • SAP:安定度・抽象度等価の原則

パッケージの抽象度と安定度は同程度でなければならない。

しかし、抽象度が低く安定度が高くても、変更されにくければよい。
これと対称の、抽象度が高く安定度が低いパッケージは役に立たない。(利用者が拡張して用いる場合を除く)

抽象度A = パッケージ内の抽象クラス数 / パッケージ内のクラス数
正規化された主系列からの距離D' = |A + I - 1|

D'が小さいほどこの原則に則っている。



参考:

アジャイルソフトウェア開発の奥義

アジャイルソフトウェア開発の奥義


いい本だ。
ちょいと高いが。