Awareness of design smells – indicators of common design problems – helps developers or software engineers understand mistakes made while designing, what design principles were overlooked or misapplied, and what principles need to be applied properly to address those smells through refactoring. Developers and software engineers may "know" principles and patterns, but are not aware of the "smells" that exist in their design because of wrong or mis-application of principles or patterns. These smells tend to contribute heavily to technical debt – further time owed to fix projects thought to be complete – and need to be addressed via proper refactoring. Refactoring for Software Design Smells presents 25 structural design smells, their role in identifying design issues, and potential refactoring solutions. Organized across common areas of software design, each smell is presented with diagrams and examples illustrating the poor design practices and the problems that result, creating a catalog of nuggets of readily usable information that developers or engineers can apply in their projects. The authors distill their research and experience as consultants and trainers, providing insights that have been used to improve refactoring and reduce the time and costs of managing software projects. Along the way they recount anecdotes from actual projects on which the relevant smell helped address a design issue.
The book is very dry and you need to be in the mood to read it. For those who like going deeper in software design principles and like reading books on patterns, refactoring, and smells, this book will be interesting. There is nothing outstanding there but the authors did a great job to catalogue common design smells. For each smell, they describe how they emerge, which principles they violate and possible solutions. The book is very OOD oriented, which is fair enough. It is written in a similar way to the GoF Design Patterns book. 4 stars for the effort in creating a catalogue with the smells and analysing them deeper.
I follow this book and I must admit that the book is too good.
The simple language, the examples and illustrations, the refactoring suggestions are easy to understand and implement. The case studies and anecdotes given in the book make it more interesting.
The concept of Technical Debt has been nicely explained. The design smells, their classification and details have been presented very well. The appendix speaks about the tools that can be used for identifying design smells. Most importantly, the book is very handy and I can carry it all the time with me.
After reading the book, when I analysed my code for design smells, I was surprised with the results :) Code Refactoring is the way to go for sure, but this book gives you a direction for that. I definitely feel benefited with the book. I feel I have been augmented with a better vision altogether.
My recommendation is that every developer should read this book at least once.
Lastly, I thank the esteemed authors who have done a brilliant job of sharing their knowledge in a simple yet very powerful and effective way. Kudos to you guys and thanks a ton for writing this book!
Valuable and concise catalogue of OO design smells with lots of real examples. Through the study of the smells we can appreciate better the value of design principles like: abstraction, encapsulation, information hiding, hierarchy, SOLID, etc.
just skimmed through. thus no rating. Looks like a solid collection of design smells nicely grouped around abstraction, encapsulation, modularization and hierarchies.