Book Review: Adaptive Code via C#: Agile coding with design patterns and SOLID principles
Recently I had a chance to read the book: Adaptive Code via C#: Agile coding with design patterns and SOLID principles by Gary McLean Hall.
In this post, I am going to share my remarks on this book. Taken into account, these are my personal opinions after reading the book, you may read the rest of this post.
First and foremost, this book is not about learning the C# language and features. This book is also not meant to be a book devoted to teach design patterns! So if you are looking for a book with a long list of design patterns and their explanations, this is not a right book for you! There is plenty of books and video training out there which could be used for your purpose.
Before I dig into the details and share my reviews about this book, I would have to say after being in the software development industry for more than a decade now, I would say Gary McLean Hall is an indeed expert experienced developer and he really knows what he is talking about!
The book is very well-written and author has done his best to explain the content as clear as possible. I really enjoyed the style of the writing and also the approach and structure of the book.
The other point is that, as mentioned on the back cover of the book, the audience of this book are experienced developers! The book is in no way targeted for beginners or even in my opinions intermediate developers. While reading the book, I could make the best sense of many things which were explained in the book and most of the times it was coming from my prior experiences. Considering these points, let's start the review.
The first chapter starts with a short introduction of agile methodologies and then focusing of scrum. If you have been working with scrum methodologies for a while, you may know there is no single scrum and there are some debates about some common challenges and concerns.
Author is giving his recommendations for having a better software development with backing up with reasons behind the particular decisions and different approaches and consequences. It's not about being agree with the author or not. But it's about having an expert's opinions about the concerns and the reasons behind them. I found it quite informative.
Then author focuses on interfaces in C# which are the pillars of object oriented programming and then explaining how to write your code to be Unit-Testable!
The second part of the book starts with the title "Writing Solid Code"!
If you have been in software development industry for a few years, you may have read a lot of articles and books or even watched video training about SOLID principles. So did I.
But this book is different with the majority of them. Author explains all the principles by a step by step approach and examples. You will see first the problems and then refactoring the code to solve the problems. He is explaining different approaches and their particular benefits and drawbacks and giving his recommendations. I really enjoyed this part, since it made a lot of sense to me. I would even say, I had never seen clearer and better illustration for Liskov Substitution Principle and Interface Segregation somewhere else. It's not about learning the ideas an definitions. It's about understanding them in-depth and feeling the smell of the code in their absence!
The name of the book is chosen carefully and correctly. It's all about writing Adaptive code and refactoring with using the famous design patterns. This is the way to survive with agile methodologies.
The last part of the book is about a sample project which is developed in two sprints (two chapters of the book) and practically talk about how two develop a software in an agile way with scrum and how to use what you have learned in rest of the book in practice.
Conclusion:
I found this book quite informative and planed to read it thoroughly again soon. I would recommend this book to all professional .NET developers who wish to write better adaptive code.