Beautiful C++: 30 praktische Regeln für besseren Code
Beautiful C++: 30 praktische Regeln für besseren Code
Zusammenfassung:
Einleitung
Das Buch „Beautiful C++: 30 Core Guidelines for Writing Clean, Safe, and Fast Code“ (im Deutschen übersetzt als „Schönes C++: 30 grundlegende Regeln für sauberen, sicheren und schnellen Code“) erschien 2021 im Verlag Addison-Wesley. Die Autoren – J. Guy Davidson und Kate Gregory – sind bekannte Experten in der C++-Community, Mitglieder des Standardisierungskomitees und Autoren zahlreicher technischer Artikel. Im Gegensatz zu akademischen Lehrbüchern lehrt dieses Buch die Sprache nicht von Grund auf, sondern bietet eine durchdachte Sammlung praktischer Empfehlungen, die auf den C++ Core Guidelines (Empfehlungen von Bjarne Stroustrup und Herb Sutter) basieren.
Worum es in dem Buch geht
Das Buch besteht aus 30 Kapiteln, die sich jeweils einer Regel (Guideline) widmen. Die Regeln sind nach thematischen Abschnitten gruppiert: Sicherheit, Ausdrucksstärke, Leistung, Speicherverwaltung, Schnittstellendesign usw. Die Autoren listen nicht nur trockene Direktiven auf – sie erklären ausführlich, warum eine Regel wichtig ist, zeigen typische Fehler (Antipatterns) und bieten korrekte Alternativen in C++17 und C++20. Jedes Kapitel endet mit einer Zusammenfassung und einer Liste weiterführender Literatur.
Für wen ist dieses Buch
Das Buch richtet sich an praktizierende C++-Entwickler, die bereits Erfahrung im Schreiben von Code haben (mindestens 1–2 Jahre) und dessen Qualität verbessern möchten. Es ist nützlich für:
- Entwickler, die von C++11/14 auf C++17/20 umsteigen;
- Teilnehmer von Code-Reviews, die nach objektiven Bewertungskriterien suchen;
- Teamleiter und Architekten, die Codierungsstandards im Team festlegen;
- Fortgeschrittene Studenten, die sich mit professioneller Programmierung befassen.
Was der Leser lernen wird
Nach der Lektüre wird der Leser in der Lage sein:
- Sicheren Code zu schreiben – undefiniertes Verhalten, Speicherlecks und Datenrennen zu vermeiden;
- RAII (Resource Acquisition Is Initialization) zur automatischen Ressourcenverwaltung zu nutzen;
- Intelligente Zeiger (unique_ptr, shared_ptr, weak_ptr) anstelle von rohem new/delete zu verwenden;
- Aussagekräftige Schnittstellen zu entwerfen – const, noexcept, explicit, Konzepte (C++20) einzusetzen;
- Die Leistung zu optimieren, ohne die Lesbarkeit zu beeinträchtigen – Container, Algorithmen auszuwählen, Kopien zu vermeiden;
- Kompetent mit Ausnahmen umzugehen: sie nicht zu missbrauchen, aber auch nicht zu vermeiden, wo sie angebracht sind;
- Moderne Funktionen von C++17/20 anzuwenden: structured bindings, if constexpr, std::optional, std::variant, ranges;
- Code-Reviews auf der Grundlage objektiver Kriterien durchzuführen, nicht persönlicher Vorlieben.
Stärken
1. Praktische Ausrichtung. Jede Regel wird von realen Codebeispielen begleitet (oft Ausschnitte aus Open-Source-Projekten). Die Autoren zeigen Schritt für Schritt, wie „schlechter“ Code in „schönen“ Code umgewandelt wird.
2. Aktualität. Das Buch konzentriert sich auf C++17 und C++20 – die zum Zeitpunkt der Veröffentlichung aktuellen Standards. Konzepte, Ranges, Coroutinen (im Kontext der Regeln) werden behandelt.
3. Autorität. Beide Autoren sind Mitglieder des ISO C++-Komitees und direkt an der Entwicklung der Core Guidelines beteiligt. Das Buch ist keine bloße Nacherzählung, sondern eine durchdachte Auswahl mit internen Kommentaren.
4. Struktur. 30 Regeln sind eine optimale Anzahl für ein sequenzielles Studium. Das Buch kann sowohl vollständig als auch selektiv gelesen werden, indem man je nach Bedarf auf das entsprechende Kapitel zurückgreift.
5. Sprache. Es ist in einer lebendigen, zugänglichen Sprache ohne übermäßigen Akademismus geschrieben. Selbst komplexe Themen (Move-Semantik, perfekte Weiterleitung) werden auf intuitive Weise erklärt.
Empfehlung
Das Buch ist für alle nützlich, die in C++ programmieren und dies besser tun möchten. Besonders empfehle ich es Teams, die
Empfehlungen
Java für Data Science: Von den Grundlagen bis zu industriellen Lösungen
Rust für Data Science: Leistung und Sicherheit in der Praxis
JavaScript (Node.js) und Datenbanken: Ein praktischer Leitfaden
PHP und Microservices: Architektur, Entwicklung und Deployment verteilter Systeme
JavaScript: Schritt-für-Schritt-Anleitung
Core Java. Band I. Grundlagen