CTS-KB

DRY

でぃーあーるわい

Don't Repeat Yourself
#設計原則 #ソフトウェア工学

「同じ知識を二箇所に書くな」という設計原則。Andy Hunt と Dave Thomas が『達人プログラマー』(1999) で提唱した。

概要

DRY が禁じるのはコードの重複ではなく知識の重複。同じビジネスルールやデータ定義が複数箇所に存在すると、変更時に片方だけ修正して不整合が生まれる。

よくある誤解

誤解実際
似たコードは全て共通化すべき偶然の一致は DRY 違反ではない。変更理由が異なるなら別に保つ
3行のコピペは即リファクタ抽象化のコストが重複のコストを上回るなら、重複を許容する

DRY が特に重要な場面

  • データベーススキーマ定義 — 定義が複数箇所にあると移行時に不整合が起きる
  • バリデーションルール — フロントとバックで同じルールを二重定義しがち
  • 設定値 — 環境変数・設定ファイル・コード内のハードコードが混在するケース

レガシーシステムでの例

COBOL の COPY 句 はまさに DRY を実現する仕組み。データ構造の定義をコピーブックに一元化し、複数プログラムから参照する。

関連用語