タグ: Software Design

インターフェース分離の原則:クライアントに未使用のメソッドへの依存を強制してはならない

クライアントは使用しないインターフェースに依存することを強制されるべきではありません。この原則は、実装者に不要なメソッドの負担をかける肥大化したインターフェースを防ぎますが、開発者はしばしばこれに違反する肥大化した抽象化を作成します。

リスコフの置換原則:破ってはならない契約

サブタイプは、プログラムの正確性を損なうことなく基本タイプと置換可能でなければなりません。この原則は継承階層の健全性を保証しますが、開発者は一見無害な設計決定でこれを日常的に違反しています。

開閉原則:壊さずに拡張する

ソフトウェアエンティティは拡張に対して開いており、修正に対して閉じているべきである。この原則は脆弱性なしに柔軟性を約束するが、開発者は抽象化をいつ適用すべきか、いつそれが過剰設計になるかで苦労している。

単一責任原則:SOLID設計の基盤

クラスは変更する理由を1つだけ持つべきである。このシンプルな原則がSOLID設計の基盤を形成するが、開発者は「単一責任」とは何か、いつクラスを分割すべきかで苦労している。