The author of SolidBook writes in his blog that software design and architecture is very hard, and despite knowing how to write code, methods, functions, etc. the more difficult challenge “is to figure out how to write code that makes it easy to change.” That is to say, the harder part about software development isn’t the writing of code in itself, but writing code that can be read, understood, and maintained.
Quote
For a lot of us, our projects die after one or two iterations because the code turns into an unmaintainable mess. - Khalil Stemmler
I have seen this in my own code - I write an application that seems reasonable at first, but as the size grows all the classes become intertwined, there is no true separation of concerns, and god-forbid I look away from the codebase for more than 10 seconds because if I can’t hold it all in my head I won’t be able to continue with development.
The solution, of course, is software design & architecture.
Clean Code Principles
- Meaningful names
- Keep it small
- Pure Functions
- Cyclomatic complexity
- Manage framework code
- Clean Architecture
- Dependency Injection TODO
OOP
OOP Features
Design principles and patterns
Architectural patterns
Primarily from Cosmic Python