TL;DR

オブジェクト指向設計の 5 つの原則の頭文字を並べたもの。Robert C. Martin が 2000 年の論文「Design Principles and Design Patterns」で原則を示し、2004 年ごろに Michael Feathers が SOLID という頭字語を作った。

なぜ必要か

Wikipedia によると、SOLID 原則はソースコードを理解しやすく、柔軟で、保守しやすくすることを目指している。結合を減らし、要件が変わったときにシステムを拡張しやすくする。

仕組み

5 つの原則は次のとおりである。

  • S: 単一責任の原則(SRP)。クラスを変更する理由は 1 つより多くあってはならない
  • O: オープン・クローズドの原則(OCP)。ソフトウェアの構成要素は拡張に対して開かれ、修正に対して閉じているべきである
  • L: リスコフの置換原則(LSP)。基底クラスが期待される場所で、サブクラスを使ってもプログラムが壊れないようにする
  • I: インタフェース分離の原則(ISP)。クライアントに、使わないメソッドへの依存を強制してはならない
  • D: 依存関係逆転の原則(DIP)。具象ではなく抽象に依存すべきである

注意点

手を動かしてわかるクリーンアーキテクチャ 第3章 によると、単一責任の原則は「1 つのことだけを行う」と解釈されがちだが、大事なのは変更する理由が 1 つしかない点である。

関連

出典