概要
SOLID原則(ソリッドげんそく)とは、オブジェクト指向プログラミングにおける良い設計を行うための5つの基本原則です。
この原則を守ることで、コードは「理解しやすく」「修正しやすく」「再利用しやすい」ものになります。
正式名称
- Single Responsibility Principle(シングル・レスポンシビリティ・プリンシプル)
→ 単一責任の原則 - Open/Closed Principle(オープン・クローズド・プリンシプル)
→ 開放/閉鎖の原則 - Liskov Substitution Principle(リスコフ・サブスティチューション・プリンシプル)
→ リスコフの置換原則 - Interface Segregation Principle(インターフェイス・セグリゲーション・プリンシプル)
→ インターフェイス分離の原則 - Dependency Inversion Principle(ディペンデンシー・インバージョン・プリンシプル)
→ 依存性逆転の原則
略称
- SRP(エス・アール・ピー) … 単一責任の原則
- OCP(オー・シー・ピー) … 開放/閉鎖の原則
- LSP(エル・エス・ピー) … リスコフの置換原則
- ISP(アイ・エス・ピー) … インターフェイス分離の原則
- DIP(ディー・アイ・ピー) … 依存性逆転の原則
特徴
- 保守性:変更に強くなる
- 再利用性:部品のように使い回せる
- 可読性:役割がはっきりして分かりやすい
- 柔軟性:新機能を追加しやすい
- テスト容易性:単体テストしやすくなる
具体例
- SRP(単一責任の原則)
例:ユーザー管理クラスが「ログ保存」も担当している → 責任が2つあるので、ログ保存は別クラスに分ける - OCP(開放/閉鎖の原則)
例:決済処理に新しい支払い方法を追加 → 既存コードを修正せず、新しいクラスを追加して対応 - LSP(リスコフの置換原則)
例:鳥クラスを継承したペンギンクラスが「飛ぶメソッド」を使えない → 継承の設計が誤っている - ISP(インターフェイス分離の原則)
例:プリンタ用インターフェイスに「FAX送信メソッド」が含まれている → 使わない機能を押しつけているので分割すべき - DIP(依存性逆転の原則)
例:高レベルの注文処理クラスが「MySQLクラス」に直接依存 → 「DBインターフェイス」を間に挟んで依存を逆転させる
関連用語
用語 | 解説 |
---|---|
オブジェクト指向(OOP) | 現実のモノや概念を「オブジェクト」として扱い、プログラムを組み立てる考え方 |
デザインパターン | よくある設計問題の再利用可能な解法 |
リファクタリング | 外部から見たプログラムの動作を変えずに、コードの内部を改善する作業 |
カプセル化 | オブジェクト指向におけるデータと処理をひとまとめにして、外部から直接触れないように守る仕組み |
抽象化 | 共通する特徴だけを取り出してシンプルに表現すること |