"The system should be designed as simply as possible at any given moment. Extra complexity is removed as soon as it is discovered." Not BigDesignUpFront? (BDUF).
If this is a "best practice", then why don't people do it?
- lack of experience
- they don't spend enough time on it, not done often enough
- they don't refactor so code grows complex
- lack of design reviews
- overdesign, plan too far into future
- don't know how to properly use DesignPatterns
How is it any different if done "eXtreme"?
- ruthlessly refactor
- very small classes
- do one thing / have one responsibility
- very small methods
- instead of block comments
- just a couple lines of code
- ==> self documenting (really)
- long method and variable names instead of comments
- zero duplicate lines of code
- each class does one thing and does it well
- design patterns used judiciously; used to communicate more than to code
What other practices support this practice?
- SmallReleases discourages overdesign
- CommonVocabulary shows up in the design
- "future design changes tend to follow a convergent path"
- SustainablePace helps us think clearly
- Refactoring moves the code toward SimpleDesign
- (since we can't ever get it right the first time)
- PairProgramming gives us the confidence that it's simple, not stupid
- CodingStandards eliminates distractions
What other practices are supported by this one?
How do I get started?
Next: UnitTesting
-- AndrewFuqua - 31 Mar 2002