Summary of Design Heuristics
More alarming, the same programmer is quite capable of doing the same task himself in two or three ways, sometimes unconsciously, but quite often simply for a change, or to provide elegant variation.
—A. R. Brown and W. A. Sampson
Here's a summary of major design heuristics:
-
Find Real-World Objects
-
Form Consistent Abstractions
-
Encapsulate Implementation Details
-
Inherit When Possible
-
Hide Secrets (Information Hiding)
-
Identify Areas Likely to Change
-
Keep Coupling Loose
-
Look for Common Design Patterns
The following heuristics are sometimes useful too:
-
Aim for Strong Cohesion
-
Build Hierarchies
-
Formalize Class Contracts
-
Assign Responsibilities
-
Design for Test
-
Avoid Failure
-
Choose Binding Time Consciously
-
Make Central Points of Control
-
Consider Using Brute Force
-
Draw a Diagram
-
Keep Your Design Modular