Discussion of "A Philosophy of Software Design"
Lecture Notes for CS 190
Winter 2020
John Ousterhout
- 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?
- Deep and shallow classes
- Interface vs. implementation
- 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
- Have you received other advice that contradicts the book?