Software Design Philosophy
Classes should deep
Deep interface : Unix file I/O
Defines errors out of existance
Try to minimize the numberd of places we have to handle exceptions
No erros eaither side - moving without errors. Exp. Unix vs Windows file delete.
Substring- java exception
Throwing exception further down the stream
Tacticas vs Strategic promgraming
Tactical
goal: get the next feature/bug fix working ASAP
A few shortcuts and kludges are ok ?
result: bad desing, high complexity
going into tornado.
Strategic
Goal: Great design
Simplify future development
Minimize complexity
Must sweat the small stuff
Investment mindset
Pays back in long run
continual small investments (10-20%)
new code- careful desing, good documentation
when changing code
improve somethings
dont settle at fewest modified lines of code
after change, system is the way it would have been if designed that way from start