2020
Part 1: Why it all matters
1: The bigger picture
Part 2: Foundations of design
2: Separation of concerns
3: Abstraction and encapsulation
4: Designing for high performance
5: Testing your software
Part 3: Nailing down large systems
6: Separation of concerns in practice
7: Extensibility and f lexibility
8: The rules (and exceptions) of inheritance
9: Keeping things lightweight
10: Achieving loose coupling
1: The bigger picture
2: Separation of concerns
3: Abstraction and encapsulation
4: Designing for high performance
5: Testing your software
6: Separation of concerns in practice
7: Extensibility and f lexibility
8: The rules (and exceptions) of inheritance
9: Keeping things lightweight
10: Achieving loose coupling
