Post

Book Review: C++ Software Design by Klaus Iglberger

I have recently finished reading “C++ Software Design” by Klaus Iglberger, and I would like to share with you my review.

The Author

Klaus is a well-known figure in the C++ community, with expertise in modern C++ programming techniques and software design patterns. As the host of the Munich C++ group, he has given numerous talks on topics such as design patterns and modern C++ programming, which have been well-received by attendees.

The Book

In just a little more than 400 pages, Klaus gives not only a modern definition of design patterns and why they are relevant and useful, but he also explores them in great detail. Here there is a list of the patterns explored:

  • Visitor
  • Strategy
  • Command
  • Observer
  • Adapter
  • CRTP
  • Bridge
  • Prototype
  • External Polymorphism
  • Type Erasure
  • Decorator

What sets this book apart from other resources on design patterns is the emphasis on the intent of each pattern and the differences between them. This makes it easier for readers to understand how to apply each pattern.

For the C++ passionates, every pattern is described as well by means of modern C++ code, with an emphasis on modern practices. All the code of the book is hosted on github. My favourite design pattern is by far the Type Erasure, I think this book can be considered as the first real reference for this pattern. The code, the benchmarks and the optimization techniques shown in the chapter dedicated to this pattern, are really interesting and inspiring.

Conclusions

Overall, “C++ Software Design” is an excellent resource for anyone looking to deepen their understanding of software design patterns and learn how to apply them in modern C++ programming. The book is especially valuable for C++ enthusiasts, as it describes each pattern using modern C++ code. After reading this book, I feel more confident in my ability to apply design patterns in my own work, and I would highly recommend it to others interested in software engineering and programming in C++.

This post is licensed under CC BY 4.0 by the author.