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

The Common Reuse Principle (CRP) 共通再利用原則


共通再利用原則

パッケージ内のクラスは同時に再利用される。つまり、パッケージ内の1つのクラスを再利用することは、パッケージに含まれた全てのクラスを再利用することを意味する。

The classes in a package are reused together. If you reuse one of the classes in a package, you reuse them all.


再利用の単位が異なるクラスは、同一のパッケージに含めるべきではない。

Classes that aren’t reused together should not be grouped together.[by Martin]

内容

パッケージに入れるクラスは何にするかという判定基準を再利用の観点から表したものです。あるパッケージをバージョンアップする場合、利用している側のソフトウェアにとって関係のないクラスが修正されたにも関わらず更新しなければならない、というのはおかしな話です。パッケージをリリースしたあとの配布の問題を考えてもこうなっていることが理想です。Interface Segregation Principle のパッケージ版といえます。

パッケージを利用する側の視点に立ってパッケージを構築すること。クライアントから利用されないクラスは、同一パッケージに含めてはならない。パッケージにクライアントが利用しないクラスが含まれていれば、クライアントには本来関係のないそれらのクラスの修正に伴ってパッケージが再リリースされることになる。これは先の「再利用・リリース等値の原則」に違反することにもなる。