- divide the system into subsystems at architecture level so you can focus on a smaller amount at a time
- design class interfaces to ignore inner workings(encapsulation, one of the best tools one can get)
- making a consistent abstraction, so you don't have to remember arbitrary details
- avoid global data because it adds to the amount of code you have to juggle at one time
- avoid deep inheritance. It is intellectually demanding
- avoid deep nesting of loops and conditionals, to avoid killing processor time and gray matter
- avoid gotos - they break the linearity, making code hard to follow
- carefully define your approach to error handling. You will use a proliferation of arbitrary techniques otherwise
- do not allow classes to become monster classes
- keep the routines short
- use clear, self-explanatory variable names
- minimize the number of parameters passed to a routine
- use conventions, to spare your brain the challenge of remembering arbitrary, accidental differences between different sections of code
Monday, November 06, 2006
Conquering complexity
Techniques to defeat the biggest problem you have in software development: complexity. Adapted(again) from "Code Complete 2".
Subscribe to:
Posts (Atom)