REVIEW - Clean Architecture - A Craftsman's Guide to Software Structure and Design

Title:

Clean Architecture - A Craftsman's Guide to Software Structure and Design

Author:

Robert C. Martin

ISBN:

9780134494166

Publisher:

Pearson Professional (2018)

Pages:

404pp

Reviewer:

Ian Bruntlett

Reviewed:

January 2019

Rating:

★★★☆☆

The backbone of this book is the design principles/guidelines that are organised into the acronym SOLID. They are:

° SRP: The Single Responsibility Principle.

° OCP: The Open-Closed Principle.

° LSP: The Liskov Substitution Principle.

° ISP: The Interface Segregation Principle.

° DIP: The Dependency Inversion Principle.

Overview

This book is split into 7 parts, spanning 35 chapters.

Part 1 is the introduction.

Part 2 covers programming paradigms and takes the position that, with Structured Programming, Object-Oriented Programming and Functional Programming all having been discovered, we have no more paradigms to discover.

Part 3 goes into detail about SOLID design principles and this covers things I am more familiar with.

Part 4 is about design principles for dealing with components, something I am unable to comment on.

Part 5 is all about architecture and will bear reading and re-reading.

Part 6 takes the view that the database, the web, and frameworks are all low-level details which you should isolate yourself from, using abstractions.

Part 7 – the Appendix – is a collection of interesting anecdotes relating situations that reinforces the conclusions of this book.

I do have some alternative SOLID acronyms – wide eyed Software Engineers might think of it as System Of Leveraging Interesting Designs and hard-bitten consultants might think of it as System Of Leveraging Immense Dosh. Other people have discussed SOLID – help from accugeneral prompted me to look at Chris Oldwood’s article ‘KISSing SOLID Goodbye’ in Overload 122 and to watch Kevlin Henney’s ‘SOLID Deconstruction’ presentation and this helped me adopt a less prescriptive approach to SOLID.

Things I gained from this book:

° Better understanding of the SOLID design principles / guidelines.

° Introduction to the Clean Architecture.

Downsides:

° Wedded to component architecture.

° Some of the structured diagrams are a bit too abstract for me – I would have appreciated something in addition – perhaps an explanation and a CRC card or two.

Conclusion

I’m going to have to read this book again, after a suitable period of doing other things. I particularly liked the contributions made by other authors. This is a thought provoking book that discusses the importance of coding, design, and architecture. Well worth reading – repeatedly.


Book cover image courtesy of Open Library.