Hands-On Design Patterns with C++: Solve common C++ problems with modern design patterns and build robust applications, 2nd Edition
X**G
Learn C++ design pattern embedded in rich and practical examples
I came across Fedor in CPPNOW conference and was impressed by his deep knowledge in C++ and willing to share. Since then, I have read Fedor's 1st edition of his C++ Design Pattern book and in the middle of reading the 2nd edition.I highly recommend this book to intermediate and above C++ programmers, who wants an elevate in designing robust and extendable softwares. Even though design pattern is usually universal to all programming languages, as a C++ expert, Fedor's book mainly focuses on using C++ and it's latest language features as examples to walk readers through these important design patterns.I like the 2nd edition more than the 1st edition in that:- Code examples are organized better. All code examples have index(name) so it’s easier to find the corresponding code in the online repo.- Included C++ 20 features, such as concepts in SFINAE and subsequent chapters such as CRTP. In the meanwhile, Fedor didn't forget to also mention earlier language features as a retrospect.- Chapters cross reference each other more. i.e. CRTP references a lot of Policy based design. This gives reader much more insight and find synergy when reading different chapters.- The book is organized in a natural learning order by throwing out a question, and walk through a "natural" thinking way of solving it.- It covers a lot of details that can be practical. I really like Strategy and Policy based design pattern chapters. These were more advanced features to me in the past, but with this book, I am more confident to use these features more often.To make it more useful, I would recommend adding a section right before or after the "Summary" section in each chapter using bullet points to summarize the different scenarios such design pattern could be used. This is usually mentioned throughout the chapters, but bullet point summary of the scenarios/use-cases would be helpful/time-saving when reading the book for the second time.
K**R
Easy to Follow with Great Examples
Design patterns are not generally easy to understand, especially if you’re starting out. However, this book with the way it builds on examples in a top-down approach is about the easiest way of learning them I have found. Additionally, the examples slowly help an intermediate or junior developer start to use more advance techniques quickly. Fedor is a master at performance (just watch some of his talks) and so the whole book has that as a guiding force.The two sections of the book give a nice gentle introduction to some of the basics in C++ with and advance twist. For example, using Templates. I was never a template fan, in general they aren’t difficult once you get a feel for them, but the initial bite can be tough. Fedor’s book makes it far easier, including helping you understand where to apply them.The structure of the book though top-down still allows you to quickly jump to specific sections to learn what you need right now. I like this because on one hand, if working through and advance topic it’s easy to see how things are built off one another, but you can still get where you need quickly. Compared to other C++ books that are more encyclopedia like and have you jumping around, this makes for a more usable text.Fedors examples and explanations are excellent. They are concise, yet easy to follow. If you take the time to work through them, it will improve your understanding of the content.
D**A
A must read for coding beginners
The discussion of current design patterns and their applicability in modern C++ programming is what really distinguishes this version from others. Beyond the conventional patterns, the author includes comments on how to modify these patterns to fit the most recent C++ features and best practises. This forward-looking strategy makes sure that readers not only learn the current patterns, but also acquire the knowledge and abilities necessary to continue to be at the cutting edge of C++ development.
B**G
Another masterpiece of Fedor
You might think that this is another one of those “design patterns” books that contain encyclopedic design patterns but have little information on how to implement them into your code. However, this book is different. The author has chosen widely used patterns in modern C++ designs and shows how they are implemented and when they should be used. So you will see many examples (as the book title suggests: this is a “hands-on” book). I like the way the author explains the problems by showing code snippets (as Linus Torvalds’ quote goes: “show me the code”).What I like most about the book is the way the author walks the reader step by step into the depth. Unlike other design pattern books, this book doesn’t start by talking about design patterns directly. Instead, the author lays out the necessary (C++) basis first and then applies them later to the design examples. Even for the “basis”, the author talks about them in great depth that you may not be able to find in other C++ programming books. As an experienced C++ programmer, I found this to be a bonus point of the book because it answers a lot of WHYs that I’ve been wondering about for years (have you ever been curious how type erasure is implemented in C++?).One thing worth mentioning is that this book is not for C++ beginners (I don’t think any design pattern books should be for beginner programmers though). It requires a certain level of C++ knowledge to understand. But the good thing is that the author recommended C++ programming books in each chapter in case the reader needs help understanding the example code.This book is definitely in my personal book library!
Trustpilot
3 days ago
2 days ago