Clean Code: Best Practices für modernes C++
- Kurs-Nr.:
- 19
- Ort:
- Online-Schulung
Beschreibung
Dauer
- 3 Tage
Begleitliteratur
Vorgehensweise
- Theorie und Praxis mit vielen Übungen, zu denen Sie den Sourcecode und die Musterlösungen erhalten
- Sie benötigen einen PC mit einem aktuellen C++ Compiler (mind. C++11)
Ziel
- Lerne Sie den sicheren Einsatz von modernem C++ kennen
- Entwickeln Sie durch ein bewährtes Regelwerk modernes C++ per Design
Standard
- C++11/14/17 Standard
Inhalt
Zentrale Prinzipien guter Softwareentwicklung
- Was verbirgt hinter den Akronymen wie KISS, YAGNI, DRY und SOLID
Das Regelwerk für sichere Softwareentwicklung
Das Regelwerk der C++ Core Guidelines umfasst die wichtigen Aspekte der Softwareentwicklung:
- Philosopie
- Interfaces
- Stabile Interfaces definieren
- Der funktionale und nichtfunktionale Datenkanal von Interfaces
- Funktionen
- Reine Funktionen für Testbarkeit entwerfen
- Richtige Annahme von Funktionsargumenten und Rückgabe ihres Ergebnisses
- Klassen und Klassenhierarchien
- Einsatz von class versus struct
- Entwurf von Klassen (The Big Six)
- Implizite Konvertierungen verbieten
- Richtige Initialisierung und Destruktion von Objekten
- Virtualität richtig anwenden
- Überladen und Überschreiben unterscheiden
- Enumerations
- Ressource Management
- Sicherere Umgang mit Ressourcen
- RAII (Resource Acquisition Is Initialization) verwenden
- Ausdrücke und Anweisungen
- Gute Name für Softwarekomponenten verwenden
- Typsicherer Initialisierung mit geschweiften Klammern
- Automatische Typbestimmung mit
auto
- Performanz
- Regeln für Optimierung
- Bedeutung von Performanzmessungen
- Concurrency
- (NNM) No Naked Mutex anwenden
- Die Gefahren von Condition Variablen meistern
- In Task und nicht in Threads denken
- Error Handling
- Error Strategie für das Programm systematisch entwickeln
- Konstanten
- Die Wichtigkeit von Konstantheit für den Optimierer und die Codequalität
- Templates
- Templates gezielt einsetzen
- C-Style Programmierung
- C mit C++ Code verheiraten
- Die Standard Bibliothek
std::array
undstd::vector
sind die besten Freunde- Falls möglich,
std::unordered_map std::map
vorziehen
Pattern und Idiome
- Vererbung versus Komposition
- Stellvertreter
- Ressource Acquisition Is Initialization(RAII)
- Fabrikmethode
- Singleton
- Laufzeit- versus Kompilezeitpolymorphismus
- Curiously Recurring Template Pattern(CRTP)
Testen (optional)
- Testhierarchien
- Charakteristiken guter Tests
- Unit Tests
- Test Driven Development (TDD)
Refaktoring (optional)
- Vorteile
- Code Smells
- Werkzeugunterstützung
Wichtige Online Werkzeuge
Teilnahmebedingungen:
Die allgemeinen Teilnahmebedingungen befinden sich in den AGBs.