「同じ知識を二箇所に書くな」という設計原則。Andy Hunt と Dave Thomas が『達人プログラマー』(1999) で提唱した。
概要
DRY が禁じるのはコードの重複ではなく知識の重複。同じビジネスルールやデータ定義が複数箇所に存在すると、変更時に片方だけ修正して不整合が生まれる。
よくある誤解
| 誤解 | 実際 |
|---|---|
| 似たコードは全て共通化すべき | 偶然の一致は DRY 違反ではない。変更理由が異なるなら別に保つ |
| 3行のコピペは即リファクタ | 抽象化のコストが重複のコストを上回るなら、重複を許容する |
DRY が特に重要な場面
- データベーススキーマ定義 — 定義が複数箇所にあると移行時に不整合が起きる
- バリデーションルール — フロントとバックで同じルールを二重定義しがち
- 設定値 — 環境変数・設定ファイル・コード内のハードコードが混在するケース
レガシーシステムでの例
COBOL の COPY 句 はまさに DRY を実現する仕組み。データ構造の定義をコピーブックに一元化し、複数プログラムから参照する。
関連用語
- SoC(関心の分離) — DRY と補完関係にある設計原則