The DRY principle, formulated by Andy Hunt and Dave Thomas in The Pragmatic Programmer, states that duplication in logic should be eliminated via abstraction and duplication in process should be eliminated via automation.
Caveats
- DRY is about knowledge duplication, not code duplication
- Two identical code blocks serving different domains may NOT be violations
- Over-applying DRY can lead to premature abstraction