Clean Architecture: A Craftsman’s Guide to Software Structure and Design
Review by Sven Woltmann
According to Uncle Bob, good architecture is characterized by the fact that software can be adapted to new and changing requirements with minimal effort – and thus has a long and profitable life.
First, the book gives an introduction to the basic principles of software design (SOLID principles), principles of component design (cohesion and coupling), and metrics for evaluating the design (Efferent and Afferent Coupling, Instability, Abstractness). All of the principles and metrics were described by Uncle Bob back in 2002 in “Agile Software Development: Principles, Patterns, and Practices”; for the most part, complete sections were simply copied.
The focus of the book is on the deduction and description of what Uncle Bob calls the “Clean Architecture”:
At the software’s core are the domain-oriented components, such as entities and use cases. Those are clearly separated from so-called “secondary components” – technical implementation details such as databases, user interfaces, or frameworks. All dependencies flow from the technical details to the core. This is achieved by Dependency Inversion at the component borders.
Decoupling makes it easier to test components. Technology decisions (such as which persistence technology or dependency injection framework to use) can be postponed – or revised relatively easily later in the project.
Numerous practical examples help to understand the theory. And like all of Uncle Bob’s books, this one is peppered with numerous anecdotes from the author’s professional life – all the way back to the 1970s. These anecdotes are not only entertaining, but also help to understand the long evolutionary path to modern software architecture.
All software architects and programmers should have read “Clean Architecture” – not only to implement modern software architectures – but also to understand the theoretical foundations behind it.
🎧 Suitable as an audiobook? No, due to numerous diagrams and code examples.
By the way, you can find a tutorial series on hexagonal architecture (which is almost identical to clean architecture) in the software craftsmanship section of this website.
Other Recommendations From This Book’s Genres
Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java
Domain-Driven Design: Tackling Complexity in the Heart of Software
Implementing Domain-Driven Design
Design Patterns: Elements of Reusable Object-Oriented Software
Domain-Driven Design Distilled
Clean Code: A Handbook of Agile Software Craftsmanship
Pattern Hatching: Design Patterns Applied
Clean Craftsmanship: Disciplines, Standards, and Ethics
The Clean Coder: A Code of Conduct for Professional Programmers
Agile Software Development: Principles, Patterns, and Practices
Refactoring: Improving the Design of Existing Code
Working Effectively with Legacy Code
The Pragmatic Programmer: From Journeyman to Master
Growing Object-Oriented Software, Guided by Tests
Clean Agile: Back to Basics