Verdict: Highly recommended.
The C++ Core Guidelines (https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) were created to counter the complexities of being a C++ programmer and the regular need to learn new concepts, paradigms, and features. They are freely available on the Internet (see previous link) and will be updated in due course. Rainer Grimm, the author, also has a blog on his website (https://www.modernescpp.com), which he refers to in this book for extra detail. He also intends to update this book as new C++ Standards are released. The target readership is “all C++ Programmers, including Programmers who might consider C”. I’d recommend that C Programmers intending to move to C++ consult other sources first.
The Guidelines are organised as a reference work to be consulted when using C++ rather than a tutorial so it is not a one-stop shop – other sources need to be consulted as well, such as the ACCU conference videos (https://accu.org/menu-overviews/all-conferences/) and magazines (https://accu.org/journals/nonmembers/cvu_article_neutered/) to name a couple. The two main people behind the Guidelines are Bjarne Stroustrup (creator of C++, author of The C++ Programming Language books) and Herb Sutter (C++ blogger and co-author of C++ Coding Standards). The Guidelines are built on decades of experience and previous coding rules (such as Scott Meyer’s Effective C++ books). As such, I won’t be commenting on the suitability of the rules – I’ll just try to evaluate this book’s usefulness as a reference guide.
The book is split up into 16 chapters and 3 parts. The first part covers the Guidelines, guiding the reader through different aspects of C++ Software Development – Philosophy, Interfaces, Functions, Classes and Class Hierarchies, Enumerations, Resource Management, Expressions and Statements, Performance, Concurrency, Error Handling, Constants and Immutability, Templates and Generic Programming, C-Style Programming, Source Files, and the C++ Standard Library. Given the amount of space that the C++ Standard Library occupies in the C++ Standard, I thought this book’s chapter on the C++ Standard Library was quite small.
The second part, Supporting Sections, offers a miscellany of topics – Architectural Ideas, Nonrules and Myths, Profiles (a subset of Guidelines that can be either enforced by a compiler or a separate tool, and introduces the Guidelines Support Library.
The Appendixes cover peripheral (but important) matters. Appendix A shows how to enforce the Guidelines using either Visual Studio or clang-tidy. Appendix B is a brief introduction to Concepts. Finally, Appendix C is a brief introduction to Contracts, due for inclusion in a later release of C++.
In the course of this review, I also read this book from cover to cover, skipping parts of the templates and generic programming and concurrency chapters as they were beyond me. I found this book invaluable because it gave advice on how to use Modern C++ and helped highlight areas that I need to study further.
Author's Website: https://www.modernescpp.com