Books & References¶
Core design and patterns¶
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994/1995.
- Martin Fowler. Refactoring: Improving the Design of Existing Code, 2nd ed. Addison-Wesley, 2018.
- Joshua Kerievsky. Refactoring to Patterns. Addison-Wesley, 2004.
- Craig Larman. Applying UML and Patterns. Prentice Hall.
Architecture¶
- Len Bass, Paul Clements, Rick Kazman. Software Architecture in Practice. Addison-Wesley.
- Frank Buschmann et al. Pattern-Oriented Software Architecture, Volume 1. Wiley.
- Martin Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002.
Evolution and maintainability¶
- Michael Feathers. Working Effectively with Legacy Code. Prentice Hall, 2004.
- John Ousterhout. A Philosophy of Software Design. Yaknyam Press.
- William J. Brown et al. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley.
How to read pattern books¶
Do not memorize diagrams. For every pattern, extract:
- context;
- problem and forces;
- axis of variation;
- dependency change;
- consequences;
- known misuse;
- plausible refactoring path.