SOLID原則って何?目的って


SOLID原則

  • 関数やデータ構造をどのようにクラスに組み込むのか。
  • そのクラスの相互接続をどのようにするのか。 を含んでいる原則である

SOLID原則の目的

  • 変更に強い
  • 理解しやすい
  • コンポーネントの基盤として、多くのソフトウェアシステムで利用できる

といった性質を持つ中間レベルのソフトウェア構造が作ること。

中間レベルというのはモジュールレベルの開発を行うことを含んでいる。

SRP:単一責任の原則

モジュールはたったひとりのアクターに対して責務を負う。

OCP:オープン・クローズドの原則

ソフトウェアの振る舞いは、既存の成果物を変更せず拡張できるようにすべきである。
クラス設計、モジュール設計、コンポーネント設計には需要な原則。

LSP:リスコフの置換原則

S型のオブジェクトo1の各々に、対応するT型のオブジェクトo2が1つ存在し、Tを使って定義されたプログラムPに対してo2の変わりにo1を使ってもPの振る舞いが変わらない場合、SはTの派生型であると言える。

ISP:インターフェイス分離の原則

クライアントが本当に必要としているインターフェイスのみ が、クライアントから見えるべきで、他のメソッドには依存したくない。
=> 「インターフェイスをクライアントごとに分離」

DIP:依存関係逆転の原則

ソースコードの依存関係が抽象だけを参照しているものであり、それが最も柔軟なシステムである。
依存したくないのは、システム内で変化しやすい具象要素。

  • 変化しやすい具象クラスを参照しない
  • 変化しやすい具象クラスを継承しない
  • 具象関数はオーバーライドしない
  • 変化しやすい具象を名指しで参照しない

参考資料

Clean Architecture 達人に学ぶソフトウェア