Uncle Bob listed a few Design smells — the odors of rotting software in his book Agile Software Development. Take the inverse of that and what do you get? Criteria for good design — that’s the approach that the author of the book PHP in Action took.
Here are the characteristics of good design.
- Flexibility – easy to change
- Robustness – hard to break
- Mobility – easy to disentagle into reusable components
- Fluidity – easy to do things right
- Simplicity
- Once and only once
- Transparency – easy to read and understand
Very good criteria, in my opinion.