【そりっどげんそく】
SOLID原則 とは?
最終更新:
💡 変更の影響を抑える、設計の五つの指針
オブジェクト指向設計の5つの基本原則。保守性と拡張性の高いコードを書くためのガイドライン。
📌 このページのポイント
- S = Single Responsibility(単一責任)
- O = Open/Closed(開放閉鎖)
- L = Liskov Substitution(リスコフの置換)
- I = Interface Segregation(インターフェース分離)
- D = Dependency Inversion(依存性逆転)
単一責任原則って、一つのクラスにメソッド一つ?
そういう意味ではないよ。同じ業務上の理由で変わる処理をまとめ、別の理由で変わる処理を分ける考え方なんだ。例えば売上の計算規則と画面の見た目は、変更を求める人や目的が違うので、混ぜない設計を考えるよ
開放閉鎖原則は、既存コードを絶対に変えないこと?
拡張に対して開き、修正に対して閉じるという指針だよ。例えば支払い方法を追加するとき、共通の処理まで書き換えず、新しい実装を足せるようにする。既存の正しい処理への変更の波及を抑える狙いで、修正自体を禁止する意味ではないんだ
リスコフの置換と、インターフェース分離は?
依存性逆転と、依存性注入は同じ?
逆転の原則は、業務の規則がDBの細かな実装などへ直接依存せず、抽象へ向けて依存する設計の考え方だよ。例えば注文処理は保存用のインターフェースを使い、具体的な保存処理を差し替えられるようにする。注入は、その実装を外から渡す方法で、原則そのものとは区別しよう
五つを機械的に適用すればいい?
変更の影響や依存関係を考えるために使おう。細かく分けたり、抽象を増やしたりすること自体が目的ではないよ。今の変更でどこが巻き込まれるのかを見て、理解しやすい設計になるかを判断するんだ
まとめ:ざっくりこれだけ覚えればOK!
「SOLID原則」って出てきたら「OOP設計の5つの基本原則」と思えればだいたいOK!
📖 おまけ:英語の意味
「SOLID Principles」 = 五つの設計原則の頭文字
💬 S・O・L・I・Dは五つの原則の頭文字だよ。Robert C. Martinの解説などで広まった、設計を考えるための指針なんだ