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.
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.
° 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.
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.