Recommended.
I find it increasingly hard to review books like this. The book is competently written but didn’t really stand out to me either. The main problem is that I’ve already read several similar books. I’d say that the book this is most similar to is Klaus Iglberger’s C++ Software Design (reviewed in CVu March 2023 [1] ). Of the two, which should you choose? In my case the answer is usually “both”. If you aren’t a bookworm, I’d say that Iglberger’s book is more ‘C++ language presented by a trainer’ whilst this book is more ‘C++ nitty gritty from a technical manager’.
The book builds up gradually from part 1 (3 chapters) on C++ features and concepts. Part 2 is idioms, or maybe mini-design patterns. I’m not too sure why CRTP merits being a design pattern but type erasure is only an idiom. Maybe just for the flow of the book. The last two parts cover various design patterns.
There isn’t that much overlap with Pikus’s other book (The Art of Writing Efficient Programs, see the review in CVu May 2023 [2]). The sections on Local Buffer Optimization and Patterns for Concurrency are the most performance oriented.
One little quote. In the section on The Non-Virtual Interface there’s a description of shadowing where a derived class overload hides a base class virtual function. Pikus says “ ‘shadowing’ ... is a very bad practice.” I couldn’t agree more, having worked on a large code base that suffers badly from this.
In conclusion, this book covers most of the C++ techniques that are currently considered as best practice. You should be able to go from the basics to applying these techniques. And possibly more important than just coding there are several sections covering design issues.
Website: https://www.packtpub.com/en-us/product/hands-on-design-patterns-with-c-9781788832564
GitHub: https://github.com/PacktPublishing/Hands-On-Design-Patterns-with-CPP-Second-Edition