開放/閉鎖の原則(OCP)
開放/閉鎖の原則とは
- 拡張に対して開かれている
- 修正に対して閉じている
- ★既存のコードはできる限り触らず、クラスのメンバ変数やインターフェイスの派生クラス追加などで対応できるように設計すること。
- 閉じたモジュールであっても、閉じることのできない変更が必ずある。つまり、全てのケースに適用できる自然なモデルなど存在しない。
- そのために、「先を見越した構造」と「自然な構造」を検討する必要がある。
- この機能は今後、修正の余地がないから閉じている必要がない。
- この機能はコア機能で、今後とも機能追加を行いたいから、修正に対して閉じていたほうが良い。など。。
- この判断にはドメイン知識が重要
- また、抽象化自体がソフトウェアの可読性を下げる可能性もあるため、やりすぎに注意
結論
結論と言いつつ、書けない。。
ドメイン知識を理解して、どこを修正しやすくするべきか判断して、
インタフェース・ジェネリックを使用すれば良いと思う。。
例えば、リスト内の要素別の処理も、リスト数分のforループを行い、リスト内の要素をSwitch文で一々判断するという仕組みであれば、
逐次、新しい要素が追加されるたびに、Switch文の条件を追加する必要があるが、
インタフェース 型をforeachで回すような処理にしておけば、逐次Switch文の条件を追加する必要がなくなる。
参考:
アジャイルソフトウェア開発の奥義