TL;DR
Don’t Repeat Yourself(同じことを繰り返すな)の略。変わりうる情報の重複を減らすための、ソフトウェア開発の原則である。
なぜ必要か
同じ情報が何か所にも書かれていると、変更のたびにそのすべてを直す必要がある。Wikipedia によると、DRY は抽象化やデータの正規化によって、この重複を減らす。
仕組み
Andy Hunt と Dave Thomas が、1999 年の『The Pragmatic Programmer』で次のように定式化した。
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
対象はコードだけではない。著者たちは、データベースのスキーマ、テスト計画、ビルドシステム、ドキュメントにもこの原則を当てはめている。
注意点
Wikipedia では、早すぎる抽象化はかえって硬直した、保守しにくいコードを生むとされる。この立場から、必要になるまで抽象化しない AHA(Avoid Hasty Abstractions)という考え方もある。Sandi Metz は、誤った抽象化よりも重複のほうがよいと述べている。