閉鎖性共通の原則(Common Closure Principle: CCP)
1. 原則
同種の変更に対して一緒に変更されるクラスは、同じコンポーネントにまとめるべき
- ある変更によって影響を受けるクラス群は、すべて同じコンポーネントに属するように構成される必要がある
2. 根拠
保守性の向上
- 変更の影響範囲を局所化することで変更による予期せぬ影響を最小限に抑えることができる
変更容易性の向上
- 関連する変更が同じコンポーネントに集約することで、変更作業が容易になる
再コンパイル、再デプロイメントの最小化
- 変更時、影響を受けるコンポーネントのみを再コンパイル、再デプロイメントすればよくなり、変更による影響範囲を限定することができる
3. 指針
変更要因の分析
- システムに対する変更要因を分析し、同じ種類の変更に対して一緒に変更されるクラス群を特定する
コンポーネントの設計
- 特定されたクラス群を同じコンポーネントにまとめ、変更の影響範囲を局所化する
コンポーネントの評価
- コンポーネントの変更容易性と保守性を評価し、必要に応じてコンポーネントの分割や統合を行う
4. 注意事項
過度な凝集には注意
- 過度にクラスを凝集すると、コンポーネントの柔軟性が低下する恐れあり
依存関係が複雑化する可能性
- 不必要にクラスを凝集すると、コンポーネント間の依存関係が複雑になり過ぎ、保守性が低下するリスクがある
他の原則とのバランス
- 単一責任の原則や開閉原則など他の原則も踏まえた評価・検討が必要
参考資料