without meaning

組み込み系SIerのメモ。

開放/閉鎖の原則(OCP)

開放/閉鎖の原則とは

  • 拡張に対して開かれている
  • 修正に対して閉じている
  • ★既存のコードはできる限り触らず、クラスのメンバ変数やインターフェイスの派生クラス追加などで対応できるように設計すること。
  • 閉じたモジュールであっても、閉じることのできない変更が必ずある。つまり、全てのケースに適用できる自然なモデルなど存在しない。
  • そのために、「先を見越した構造」と「自然な構造」を検討する必要がある。
    • この機能は今後、修正の余地がないから閉じている必要がない。
    • この機能はコア機能で、今後とも機能追加を行いたいから、修正に対して閉じていたほうが良い。など。。
  • また、抽象化自体がソフトウェアの可読性を下げる可能性もあるため、やりすぎに注意

結論

結論と言いつつ、書けない。。 ドメイン知識を理解して、どこを修正しやすくするべきか判断して、
インタフェース・ジェネリックを使用すれば良いと思う。。

例えば、リスト内の要素別の処理も、リスト数分のforループを行い、リスト内の要素をSwitch文で一々判断するという仕組みであれば、
逐次、新しい要素が追加されるたびに、Switch文の条件を追加する必要があるが、
インタフェース 型をforeachで回すような処理にしておけば、逐次Switch文の条件を追加する必要がなくなる。

参考:
アジャイルソフトウェア開発の奥義

C#実践開発手法