拡張/保守性を高める為の「SOLIDの原則」

f:id:ryoutaku_jo:20190323192519p:plain

【結論】

・SOLIDの原則とは、
 アプリケーションの拡張性・保守性などを
 向上させる為の概念

・下記5つの頭文字で命名されている
  S: 単一責任の原則(Single Responsibility Principle)
  O: オープン・クローズドの原則(Open/Closed Principle)
  L: リスコフの置換原則(Liskov Substitution Principle)
  I: インタフェース分離の原則(Interface Segregation Principle)
  D: 依存性逆転の原則(Dependency Inversion Principle)

【目次】

【本題】

SOLIDの原則とは

SOLIDの原則とは、拡張性や保守性を高める為の
プログラミングの概念の一つです。

下記の5つで構成されており、
それぞれの頭文字から名付けられている

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)

子クラスは親クラスと置換可能でなければならない
という考え方

例えば、Aというクラスがあって、 それを継承したBというクラスがあったとします。

その場合、下記のコードを・・・

|ruby| A.split ||<

以下の様に置き換えても影響が出ない状態を指します。

|ruby| B.split ||<

I: インタフェース分離の原則(Interface Segregation Principle)

クライアントが使用しないメソッドには
依存させてはならない

という考え方

D: 依存性逆転の原則(Dependency Inversion Principle)

抽象に依存しなければならない
という考え方

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :106日
今日までの合計時間:990h
一日あたりの平均学習時間:9.4h
今日までに到達すべき目標時間:968h
目標との解離:22h
「10,000時間」まで、

残り・・・「9010時間!」