A Philosophy Of Software Design
complexity in software design
- Fighting Against Complexity
- by eliminating complexity
- by encapsulating complexity
- The Incremental Nature of Complexity
- Causes Of Complexity
- dependencies
- obscurity
- Symptoms of Complexity
- change amplification
- cognitive load
- unknown unknowns
working code is not enough
- Tactical Programming
- tactical tornado
- Strategic Programming
- strategic programming investment
- Investment types
- reactive
- proactive
- How Much to Invest
- Investment types
- strategic programming investment
POSD - modules should be deep
POSD - information hiding and information leakage
POSD - general purpose modules vs special purpose modules
- general purpose module
- benefits of general-purpose modules
- special purpose module
POSD - different layer different abstraction
- pass-through methods
- why pass-through methods are bad?
- pass-through variables
- why do pass-through variables add complexity?
- POSD - When is interface duplication okay?
POSD - better together or better apart
- POSD - Bring Modules Together If
- POSD - separate general-purpose and special-purpose code
- POSD - Module Division and Complexity
- POSD - Splitting and Joining Methods
- POSD - Code Repetition
POSD - better together or better apart
- POSD - Module Division and Complexity
- POSD - separate general-purpose and special-purpose code
- POSD - Bring Modules Together If
- POSD - Splitting and Joining Methods
- POSD - Code Repetition
Code Comments
- POSD - why write comments
- the four excuses not to write comments
- POSD - how to write better comments
- POSD - write comments first
POSD - choosing names
POSD - modifying existing code
POSD - consistency
- ensuring consistency
POSD - could be more obvious
- things that can make the code more obvious
- consistency
- comments
- formatting
- things that can make the code less obvious
- event driven programming
- generic containers