Code Review in C++: Was prüfen und wie man Feedback an Anfänger gibt

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Code Review in C++: Was prüfen und wie man Feedback gibt



Code Review ist ein obligatorischer Schritt in der Softwareentwicklung, besonders in C++. Diese Sprache bietet enorme Freiheit, aber mit ihr kommt auch Verantwortung. Für Anfänger kann der Review-Prozess einschüchternd wirken, aber in Wirklichkeit ist er ein mächtiges Lernwerkzeug. In diesem Artikel besprechen wir, worauf man bei der Überprüfung von C++-Code achten sollte und wie man Feedback gibt, das hilfreich und nicht verletzend ist.



1. Grundlegende Korrektheit und Speichersicherheit



Das Erste, was in jedem C++-Code überprüft werden muss, ist die korrekte Speicherverwaltung. C++ hat keinen Garbage Collector, daher sind Fehler hier kritisch.



Was prüfen:

  • Speicherlecks: Jedes new muss ein delete haben, jedes new[] ein delete[]. Besser sind intelligente Zeiger (std::unique_ptr, std::shared_ptr).
  • Array-Indexfehler: Verwendung von std::vector::at() anstelle des Operators [] zur Fehlererkennung.
  • Hängende Zeiger: Zeiger, die auf bereits freigegebenen Speicher verweisen.
  • Doppelte Freigabe: Erneutes delete für denselben Speicherblock.


// Schlecht: Manuelle Speicherverwaltungint* arr = new int[100];// ... Arbeit ...delete[] arr; // Leicht zu vergessen

// Gut: RAII verwendenstd::vector<int> arr(100);// Speicher wird automatisch freigegeben


Tipp für den Reviewer: Wenn Sie rohe Zeiger (int* ptr) oder manuelles new/delete sehen, ist das eine rote Flagge. Schlagen Sie die Verwendung von std::unique_ptr oder STL-Containern vor.



2. Verwendung der Standardbibliothek (STL)



C++20/23 bieten eine umfangreiche Standardbibliothek. Anfänger schreiben oft eigene Lösungen, wo fertige Funktionen existieren.



Checkliste:

  • Container: Statt roher Arrays — std::vector, std::array, std::map.
  • Algorithmen: Statt manueller Schleifen — std::find, std::sort, std::copy.
  • Strings: std::string statt char*.
  • Streams: std::ifstream/std::ofstream statt C-fopen.


// Schlecht: Manuelle Suchebool found = false;for (int i = 0; i < vec.size(); ++i) {    if (vec[i] == target) {        found = true;        break;    }}

// Gut: STL-Algorithmusbool found = std::find(vec.begin(), vec.end(), target) != vec.end();


Wie man Feedback gibt: Statt „Das ist falsch“, sagen Sie: „Tolle Logik! In der STL gibt es die fertige Funktion std::find, die dasselbe macht, aber kürzer und sicherer ist. Sollen wir sie ausprobieren?“.



3. Codestil, Namensgebung und Konstanz



Lesbarkeit des Codes ist die halbe Miete. Selbst perfekt funktionierender Code ist nutzlos, wenn er nicht wartbar ist.



Worauf achten:

  • Namensgebung: Variablen — snake_case (nach C++-Standard), Klassen — PascalCase. Vermeiden Sie einbuchstabige Namen (außer i für Zähler).
  • Konstanz: Parameter, die sich nicht ändern, sollten const sein. Methoden, die das Objekt nicht ändern — const.
  • Formatierung: Einheitlicher Einrückungsstil (normalerweise 4 Leerzeichen), Leerzeichen um Operatoren.
  • Magische Zahlen: Diese in Konstanten auslagern (constexpr int MAX_SIZE = 100;).


// Schlecht: Unleserlichint a = 5;for(int i=0;i<10;i                

Blogs

Buchempfehlungen