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 all but Chapters 19-20 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
General-purpose vs. special-purpose
Make code obvious
Tactical programming vs. strategic programming
- Technical debt is another term for tactical programming
Define errors out of existence
- Note: use this idea judiciously: it's easy to take it too far
Comments
Writing comments before code
Choosing names
What matters
Design it twice