One J B Rainsberger points that there are only two elements of a simple design:
- Eliminate duplication
- Give good names to functions, classes, variables etc.
He makes the following bold statement:
I claim that developing strong skills of detecting duplication, removing duplication, identifying naming problems, and fixing naming problems equates to learning everything ever written about object-oriented design.
Is it true?