SOLID原則
当記事の背景
・オブジェクト指向プログラミングにおける設計原則の再確認
・アウトプットによる長期記憶化
SOLID原則とは
・**「変更しやすい」「理解しやすい」「再利用しやすい」**モジュールを設計・開発するための原則
S:Single Responsibility Principle(単一責任の原則)
O:Open Closed Principle(オープンクローズドの原則)
L:Liskov Substitution Principle(リスコフの置換原則)
I:Interface Segregation Principle(インターフェース分離の原則)
D:Dependency Inversion Principle(依存性逆転の原則)
S:Single Responsibility Principle(単一責任の原則)
モジュール/クラス/関数などは、単一の機能について責任を持ち、その機能をカプセル化すべきである
→違反すると修正の影響範囲の調査工数が増加する。
O:Open Closed Principle(オープンクローズドの原則)
モジュール/クラス/関数などは拡張に対してはオープンであり、修正に対してはクローズドであるべきである。
→新たなコードを追加することで機能を拡張することができ、拡張によって既存コードは修正されない。
→種別によって振る舞いの変更が必要な場合、この原則を適用すべき。
L:Liskov Substitution Principle(リスコフの置換原則)
サブタイプ(継承先)のオブジェクトはスーパータイプ(継承元)の仕様に従わなければならない
→オブジェクト指向では継承は「Is-a」関係。
→リスコフの置換原則では「Is-a」を満たしているかと振る舞いが同等であるかを満たしている必要がある。
I:Interface Segregation Principle(インターフェース分離の原則)
使用しないメソッドにコードを強制的に依存させてはならない
→不要なフィールドやメソッドにクライアントが依存しなくても良いように、インターフェースの分割を図るべき。
D:Dependency Inversion Principle(依存性逆転の原則)
1.上位モジュールはいかなるものも下位モジュールから持ち込んではならない。双方とも抽象に依存するべき。
2.抽象は詳細に依存してはならない。詳細が抽象に依存するべきである。
→1は上位モジュールが下位モジュールの抽象(例えばインターフェース)に依存し、下位モジュールはそのインターフェースをimplementする形にすべきであるというもの。