In
software engineering,
don’t repeat yourself (
DRY) is a principle of
software development, aimed at reducing repetition of information of all kinds, especially useful in
multi-tier architectures. The DRY principle is stated as “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.” The principle has been formulated by
Andy Hunt and
Dave Thomas in their book
The Pragmatic Programmer. They apply it quite broadly to include “
database schemas,
test plans, the
build system, even
documentation.” When the DRY principle is applied successfully, a modification of any single element of a system does not require a change in other logically unrelated elements. Additionally, elements that are logically related all change predictably and uniformly, and are thus kept in
sync. Besides using
methods and
subroutines in their code, Thomas and Hunt rely on
code generators, automatic build systems, and scripting languages to observe the DRY principle across layers.