Good Software Design
Published: October 31, 2008
Some features of good software design:
- Is deliberate
- Is well organized
- Object oriented
Makes excellent use of Layering (and even layering inside layers)
- Careful thought is put into the placement of code in layers
- Scopes variables and functions appropriately (e.g. public, private, protected, etc...)
Minimizes copy and paste
- if you copy and paste, then it should immediately become a function and shared if at all possible.
- Your aim should be minimal duplication and maximal reuse. But please do use common sense.
- Guides novice programmers - they should follow the design almost by accident.
Each function should work as a generic tool.
- The user of a function should not need to know how it works.
- Thought should be given to this when creating any function.
- Should be as simple as possible in implementation and functionality, but no simpler.
- Refactor, refactor, refactor
Adheres to the principles of
- High Cohesion
- Low Coupling
- Makes use of deliberate CODE bottlenecks.