CTS-KB

SOLID 原則

そりっどげんそく

SOLID SOLID Principles
#設計原則 #オブジェクト指向 #DDD

オブジェクト指向設計を保守しやすく拡張しやすく保つための 5 つの基本原則。Robert C. Martin(Uncle Bob)が体系化した。

5 つの原則

名称一言で
SSingle Responsibility(単一責任)1 つのクラスに変更理由は 1 つだけ
OOpen/Closed(開放閉鎖)拡張に開き、修正に閉じる
LLiskov Substitution(リスコフ置換)サブクラスは親クラスと置き換えても破綻しない
IInterface Segregation(インターフェース分離)使わないメソッドに依存させない
DDependency Inversion(依存性逆転)上位は下位ではなく抽象に依存する

各原則の典型違反

原則違反例是正方針
SRPOrderService が在庫引当・決済・通知を全部抱える責務ごとにクラス分割
OCP商品種別が増えるたびに if/switch を追記ポリモーフィズムで拡張点を作る
LSPSquare extends RectanglesetWidth の意味が壊れる継承ではなく合成へ
ISP巨大インターフェースを実装側で空メソッド化用途別に小さく分割
DIPドメイン層が直接 ORM を呼ぶリポジトリインターフェース経由にする

DDD との関係

SOLID は DDD(ドメイン駆動設計)を支える設計原則として機能する。特に DIP(依存性逆転) はドメイン層を技術詳細から守る要であり、リポジトリパターンヘキサゴナルアーキテクチャの根拠になる。

AI 駆動開発での意義

AI が生成するコードは「動くこと」を優先するため、SRP / OCP に違反した「肥大化したクラス」「if 分岐の積み重ね」が出やすい。レビュー時に SOLID をチェックリストとして使うと、生成コードの構造的な腐敗を早期に発見できる。

マルチモール EC での適用イメージ

CTS-EC 共通商品マスタでは、共通マスタ層でカラー・サイズ・ブランドを一度だけ正規化し、モールごとの変換ルールを差し替える構造をとっている。これは OCP(モール追加時に共通マスタ側を改修しない)SRP(正規化責務とモール変換責務を分離) の素直な適用例。AI に「新しいモールを追加して」と指示する際も、変更影響が変換層に閉じるためレビュー範囲を絞り込める。

関連記事

関連用語