REVIEW - C++ Software Design - Design Principles and Patterns for High-Quality Software


C++ Software Design

Design Principles and Patterns for High-Quality Software


Klaus Iglberger


O'Reilly Media (2023)




Ian Bruntlett


September 2023



Verdict: Highly recommended.

More experienced software developers and architects than I have already heaped their praises on this book. I’ll review this book from the point of not being an expert in this topic.

The author is very well read and provides plenty of references to other C++ and software development books, papers, blogs and conference talks. In its printed format, many references are in the form of a cryptic link to things like – however, the e-book format allows the reader to copy the link address and then open the relevant site in a web browser. It would have been even better if this book’s website had a page of all the relevant links.

The content of this book concerns the use of Design Patterns, the SOLID Principles, and UML. The patterns covered from Design Patterns (aka GoF) include Visitor, Strategy, Command, Adapter, Observer, Bridge, Prototype, Decorator and Singleton. Non-GoF patterns covered include CRTP, External Polymorphism, and Type Erasure. The example source code in this book does use some later C++ features so either knowledge of C++17 or C++20 (in particular Concepts) would be helpful. The author recommended C++ Templates: The Complete Guide, C++ Move Semantics, and C++17 – The Complete Guide amongst other books. Like the authors of The Pragmatic Programmer, the author highlights key aspects of his book with (39) Guidelines.

The author demonstrates different ways of implementing featured design patterns, typically illustrating the use of compile-time polymorphism (templates) and runtime polymorphism (classes). The relevant source code can be obtained from his GitHub page. He discusses the trade-offs of the different approaches and even provides some benchmarks of runtime performance. It is harder to measure the amount of heap fragmentation incurred by using runtime polymorphism but it is mentioned in the text.

I found that to get the most out of this book, I had to consult other sources – Design Patterns, Clean Architecture, UML Distilled and C++ books in general. Overall, this is a very good book and I learned a lot from it. I expect to learn more from it by re-reading it in the future.



Your Privacy

By clicking "Accept Non-Essential Cookies" you agree ACCU can store non-essential cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

Current Setting: Non-Essential Cookies REJECTED

By clicking "Include Third Party Content" you agree ACCU can forward your IP address to third-party sites (such as YouTube) to enhance the information presented on this site, and that third-party sites may store cookies on your device.

Current Setting: Third Party Content EXCLUDED

Settings can be changed at any time from the Cookie Policy page.