Different formulations of the DRY principle: In general, the further a decision propagates, the less flexibility you have for future change. To maintain flexibility, allow as little information as possible to spread as narrowly as possible. [Kent Beck: Implementation Patterns 2007] Apply to structure-shyness: The structure decisions are all archived in the class graph. Don't let those decisions propagate all over the program.