Numerous reviews of C++ Software Design by Klaus Iglberger are available online. The surprising thing is that the only negative reviews of the book you will find are related to delivery issues or, at most, some rare cases of misprinting.
Therefore, given the incredible number of positive reviews [1,2,3,4], I don't have much more to add. I agree with all of them. The only thing I would suggest is to stop reading reviews and buy the book.
I prefer to share some of the book's key points. I have divided them into three parts: the introduction, the main parts, and the conclusions.
The introduction
The important difference between a successful project and an unsuccessful (or partially successful) project is that the first one is cheaper to maintain and provides more earnings. The second could be expensive in terms of money and time.
From the point of view of software (neglecting people, and team interactions), the key role to have a successful project is the overall structure of the software. This means that the design plays a central role in the success of the project than any other features.
A good design software achieves readability, testability, maintainability, extensibility, reusability, and scalability (also reliability).
The Key points
After understanding the importance of software design, the next step is to explain how to achieve a good architecture.
- Part 1: Exploring software principles:
- Revisiting the SOLID principles with examples
- Design software for testability
- Part 2: Building Abstraction
- Part 3: Present the definition of design pattern and show some of the most common design patterns. In particular, a lot of emphasis on the concept that a design pattern is not related to a specific implementation, but it has to specify an intent.
While the first two parts are less technical than the last one, I particularly value their general applicability across various programming languages. However, it is the third part that is notably the most substantial and essential section of the book.
My final notes
The book is a masterpiece since:
- Only a few programming books discuss software design techniques. It is a rarity
- It presents a lot of references
- A lot of notions can be applied also in other programming languages. Especially, the first part is about revisiting good software and developing good practices. Only the implementation is C++-specific.
- It is a very engaging book
- I appreciate that some examples use the standard library implementation.
References
[1] https://dev.to/sandordargo/c-software-design-by-klaus-iglberger-3e2p
[2] https://www.accu.org/bookreviews/2023/marsman_2007/
[3] https://www.linkedin.com/pulse/book-recommendation-c-software-design-victor-hugo-osornio/
[4] amazon.com and goodreaders.com reviews about the book.