読者です 読者をやめる 読者になる 読者になる

The Stable Dependencies Principle (SDP) 安定依存原則

Design

安定依存原則とは

パッケージ間の依存関係の設計は、安定性のある方向に向かわなければならない。パッケージはより安定したパッケージに依存すべきだ。

The dependencies between packages in a design should be in the direction of the stability of the packages. A package should only depend upon packages that are more stable that it is.

依存関係は安定する方向に向かわなければならない。

Depend in the direction of stability.[by Martin]

内容

ここではStability(安定性)という用語が出てきます。ここで言う安定性とは、「変更する難易度」とでもいうべきものです。安定しているパッケージは修正が難しく、不安定なパッケージは修正が容易です。SDP では、パッケージの依存関係はより安定しているパッケージへと向かうべだ、と言っています。言い変えると、パッケージは、自分よりも不安定なパッケージに依存してはならないとなります。変更が少ない安定したパッケージでも、依存先のパッケージが不安定であればその影響が及んで結局は不安定になってしまう。つまり、末端(依存されるクラスのない)のパッケージから依存関係を上にたどっていくに従って、パッケージの安定度が増すようにすべきである、ということになります。


さらに突き詰めていくと、システム中のパッケージすべてが安定している必要はないということが言えます。先の「閉鎖性共通の原則」に従って構成されたパッケージは、変更理由が同じクラス群がまとめられており、いい換えると、変更することを意識して作られた不安定なパッケージということになります。システムに柔軟性を持たせようとすれば、このような不安定なパッケージと安定したパッケージを混在させる必要が出てきます。ただし、安定依存の原則に従うためには「依存関係逆転の原則」を使用してパッケージ間の依存関係を調整する必要があります。