Seminarinformationen

Seminar - Ziel

In dieser 2-tägigen Schulung "Clean Code für C++ Entwickler" lernen Sie, wie Sie hochwertige und wartbare C++-Projekte unter Anwendung der Clean Code-Prinzipien umsetzen. Sie werden mit wichtigen Konzepten wie KISS, DRY und Information Hiding vertraut gemacht und lernen fortgeschrittene Techniken wie RAII, Smart Pointer und perfektes Weiterleiten kennen, um die Codequalität zu verbessern.

Zudem erfahren Sie, wie modernes C++ effizient durch funktionale Programmierung, typreiche Ansätze und die Nutzung von Bibliotheken eingesetzt werden kann. Ihr Wissen über Entwurfsmuster wie SOLID, Strategie und Factory wird vertieft, und Sie erhalten Einblicke in die Vorteile der Modularisierung sowie die Nutzung von Modulen.

Ein besonderer Schwerpunkt liegt auf Best Practices für Tests, insbesondere Unit-Tests mit Catch2, um robuste und zuverlässige Software zu entwickeln. Mit praxisorientierten Beispielen und Übungen lernen Sie, wie Sie sauberen Code in Ihrem Arbeitsalltag erfolgreich umsetzen können.

Teilnehmer - Zielgruppe

  • Softwareentwickler
  • Programmierer
  • Entwickler
  • Softwarearchitekten

Kurs - Voraussetzungen

  • Grundlegende Kenntnisse in C++
  • Grundlagen in Modern C++
  • Erfahrung in der Programmierung
  • Verständnis von Softwareentwicklungsprozessen

Seminardauer

  • 2 Tage
  • 09:00 Uhr bis 17:00 Uhr

Schulungsunterlagen

  • nach Absprache

Seminar-Inhalt / Agenda

Prinzipientreue

  • KISS (Keep it simple and stupid)
  • YAGNI (You Aren't Gonna Need It)
  • DRY (Don't Repeat Yourself)
  • POLS (Principle Of Least Surprise)
  • Information Hiding
  • Strong Cohesion (Starker Zusammenhalt)
  • Loose Coupling (Lose Kopplung)

Grundlegende Konzepte von Clean C++

  • Namensgebung für Bezeichner
  • Kommentare
  • Funktionen
  • Old C-Style in einem C++ Projekt

Fortgeschrittene Konzepte in Modern C++ / Secure Coding

  • Ressourcenverwaltung mit RAII
  • Nutzung von Smart Pointer Klassen (std::unique_ptr, std::shared_ptr und std::weak_ptr)
  • Verschieben ist besser als Kopieren (std::move)
  • Perfektes Weiterleiten (Perfect Forwarding)
  • Vorteile von auto (Automatic Type Deduction)
  • Vermeide UB (Undefined Behaviour)
  • Typreiche Programmierung (Type-Rich Programming, Type Traits)
  • Statischer vs. dynamischer Polymorphismus
  • Verwenden Sie Bibliotheken (STL)
  • Richtige Ausnahme- und Fehlerbehandlung
  • Design von Methoden-/Funktionsschnittstellen (Attribute)
  • Verwendung von Konzepten (concept) und Anforderungen (requires)

Einige Design Patterns (Entwurfsmuster) und Idiome

  • Das SOLID Idiom
    • Single Responsibility Prinzip (SRP)
    • Open-Closed Prinzip (OCP)
    • Liskovsches Substitutionsprinzip (LSP)
    • Interface Segregationsprinzip (ISP)
    • Dependency Inversion Prinzip (DIP)
  • Einige Muster und wann sie zu verwenden sind
  • Adapter
  • Strategy
  • Command
  • Composite
  • Observer
  • Factories
  • Facade

Modularisierung

  • Objektorientierung
  • Objektorientiertes Denken
  • Prinzipien für gutes Klassendesign
  • Module
  • Die Nachteile von #include
  • Module als Rettung
  • Unter der Haube
  • Funktionale Programmierung
  • Was ist funktionale Programmierung?
  • Funktionale Programmierung in modernem C++
    • Funktionale Programmierung mit C++-Templates
    • Funktionsähnliche Objekte (Funktoren)
    • Lambda-Ausdrücke
    • Generische Lambda-Ausdrücke
    • Lambda-Vorlagen
  • Funktionen höherer Ordnung
  • Map, Filter und Reduce
  • Pipelining mit Bereichs-Adaptern
  • Sauberer Code in der funktionalen Programmierung

Notwendigkeit des Testens

  • Unit-Tests
    • Regeln für gute Unit-Tests
    • Test Codequalität
    • Unit-Test-Benennung
    • Unit-Test-Unabhängigkeit
  • Beispiel: Die Bibliothek Catch2

Code Reviews mit AI-Tools

  • Github CoPilot

Weitere Schulungen zu Thema C++ Programmierung

Plattformübergreifende Entwicklung mit Qt - Einführung

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 3-tägigen Seminar "Plattformübergreifende Entwicklung mit Qt - Einführung" erlernen Sie die grundlegenden Konzepte und Techniken zur Entwicklung plattformübergreifender Anwendungen mit Qt. Sie machen sich mit der Qt-Entwicklungsumgebung und dem QtCreator ...

C++ Programmierung Grundlagen

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 5-tägigen Seminar "C++ Programmierung Grundlagen" erwerben Sie die Fähigkeiten, Programme mit der erweiterten Sprache C zu entwickeln. Sie lernen, eigene Problemstellungen selbstständig in funktionierende Programme zu überführen. Die Unterschiede zu C ...

Design-Pattern C++ - Entwurfsmuster

- u.a. in Nürnberg, Wien, Erfurt, Freiburg, Nordhausen

In dieser 3-tägigen Schulung "Design-Pattern C++ - Entwurfsmuster" lernen Sie eine Vielzahl von Design-Patterns kennen, die in der C++-Programmierung eingesetzt werden können. Dabei werden erzeugende Muster (Creational Patterns), strukturelle Muster (Structural ...

IT-Sicherheitskonzepte für IoT Programmierung mit C/C++

- u.a. in Stuttgart, Dresden, Heidelberg, Erfurt, Virtual Classroom

In der 2-tägigen Schulung "IT-Sicherheitskonzepte für IoT-Programmierung mit C/C++“ erhalten Sie einen umfassenden Einblick in die Softwareentwicklung auf Internet-of-Things-Systemen (IoT) sowie in die damit verbundenen Sicherheitsrisiken und deren effektive ...