<aside>
📖 These are my notes from the book A Philosophy of Software Design.
They include summarised ideas, verbatim quotes and my own opinions.
Feel free to purchase a copy and support the author!
</aside>
2 ways to reduce complexity:
- Make code simpler and more obvious
- Encapsulation & abstraction
It's easier to tell whether a design is simple than it is to create one. Use the ability to recognise complexity to stay away from it. You’ll start recognising patterns for simplifying designs.
Complexity
Tactical vs Strategic programming
Modules
Information hiding
General-purpose modules
Different layer, different abstraction
Pull complexity downwards
Better together or apart?
Define Errors out of existence
Design it twice
The 4 excuses for not writing comments
Comments should describe things that aren’t obvious from the code
Choosing names
Write comments first
Modifying existing code
Consistency
Code should be Obvious
Software trends
Designing for Performance
Decide what matters