SOLID原則
ソフトウェアを開発、保守するうえで実装上守ると望ましい原則をまとめたもの。SOLID、というのはいわゆるアクロニムで、 以下の5つの原則からなる。
単一責任の原則(SRP: Single Responsibility Principle) あるクラスが提供する機能は単一であるべき
開放閉鎖の法則(OCP: Open Closed Principle) ソフトウェアの構成要素において、拡張に対しては開放的であるべきであり、修正に対しては閉鎖的でなければならない
あるソフトウェアを変更する際に多くの箇所を変更しなければならない事態を避けるための法則
これを実現するために、SRPやDIPがある
リスコフの置換法則 (LSP: Liscov Substitution Principle) オブジェクト指向プログラミングにおいて、サブタイプのオブジェクトはスーパータイプのオブジェクトの仕様に従わなければならない
je6bmq.icon言い換えれば、ソースコード上であるクラスの継承やインタフェースを使って多相な実装を行いつつも、特定のサブタイプのみに適用されるad-hocな処理(isinstance(SubClass)のような分岐処理)を設けないようにしましょう、という理解
あるコンポーネントは、そのコンポーネント内で使っている処理にのみ依存すべき
例えばクラスAがクラスBに依存していて、クラスBはfoo,barというメソッドを持つが、クラスAからはfooというメソッドにのみ依存している場合、その単位でインタフェースを分けるべき
依存性逆転の法則 (DIP: Dependency Inversion Principle) 具体的な実装(具象クラスや具象メソッド)にできるだけ依存しないようにすべき
具象クラスは変更がなされやすく、安定しないという前提に立っている
できるだけ、というのはmain関数のような絶対に具体的なものに依存しなければならないコンポーネントが必ず存在するため
je6bmq.iconこういうインタフェースをもって、変更の影響範囲を制御しましょう、というのがDIP+OCPという理解