Discussion of "A Philosophy of Software Design"
This class session will review and discuss the main ideas in A Philosophy of Software Design.
Instructions for students:
- Read Chapters 1-18 before class.
- Think about your own experiences:
- Have you experienced problems and/or solutions similar to those described in the book?
- Have you received advice that contradicts the book?
Interface vs. implementation
Deep and shallow classes
Abstraction
Temporal design vs. information hiding
Dependencies
Make code obvious
Tactical programming vs. strategic programming
Define errors out of existence
Comments
Writing comments before code
Choosing names
What matters
Design it twice
Pull complexity downwards
General-purpose vs. special-purpose
Different layer, different abstraction