全再利用の原則(Common Reuse Principle: CRP)
1. 原則
コンポーネント内のクラスは、すべて一緒に再利用されるべき
- コンポーネント内のいずれかのクラスが再利用される場合、そのコンポーネント内の他のすべてのクラスも再利用される事を前提にするべきである
- したがって、コンポーネントは関連性の高いクラスだけが含まれるよう構成される必要がある
2. 根拠
再利用性の向上
- 関連性の高いクラスをまとめることで、コンポーネントの再利用性を高めることができる
依存関係の明確化
- コンポーネント内のクラス間の依存関係を明確にし、コンポーネントの理解と保守を容易にする
コンポーネントの凝集性
- コンポーネント内のクラスが互いに関連し、共通の目的を持つようにすることで、コンポーネントの凝集性を高める
3. 指針
関連性の高いクラスを同じコンポーネントにまとめる
- 関連性の高いクラスを同じコンポーネントにまとめ、関連性の低いクラスは別のコンポーネントに分離する
密接に関連するクラスを同じコンポーネントにまとめる
- クラス間の依存関係を分析し、密接に関連するクラスを同じコンポーネントにまとめる
継続的なコンポーネントの評価/整理
- 継続的にコンポーネントの再利用性を評価し、必要に応じてコンポーネントの分割や統合を行う
4. 注意事項
過度な凝集
- 過度にクラスを凝集すると、コンポーネントの柔軟性が低下し、変更が困難になるリスクがある
依存関係の複雑化
- 不必要にクラスを凝集すると、コンポーネント間の依存関係が複雑になり、システムの理解と保守が困難になるリスクがある
他の原則とのバランス
- 他のコンポーネント設計原則(単一責任の原則、開閉原則など)と合わせてバランスの取れた設計を考慮する必要がある
参考資料