Clean Code in C++: Prinzipien für lesbaren Code

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

Clean Code auf C++: Wie man Code schreibt, den man Kollegen zeigen kann



Jeder C++-Entwickler steht früher oder später vor der Situation, dass der eigene Code nach einem Monat zu einem "dunklen Wald" wird. Variablen wie int a, Funktionen mit 300 Zeilen und magische Zahlen im gesamten Projekt — kommt Ihnen das bekannt vor? In diesem Artikel analysieren wir die Prinzipien von Clean Code in Bezug auf C++, damit Ihr Code nicht nur funktional, sondern auch für andere (und für Ihr zukünftiges Ich) verständlich ist.



1. Benennung von Variablen, Funktionen und Klassen



Ein guter Name ist die halbe Miete. In C++ ist es üblich, camelCase für Variablen und Funktionen, PascalCase für Klassen und UPPER_CASE für Konstanten zu verwenden (obwohl modernes C++ constexpr bevorzugt).



Schlechtes Beispiel:

int d; // vergangene Zeit in Tagenfloat x; // Gehaltsmultiplikatorbool fl; // ist Datei geladen?


Gutes Beispiel:

int elapsedDays;float salaryMultiplier;bool isFileLoaded;


Die Regel ist einfach: Der Name sollte die Frage "Was ist das?" oder "Was tut es?" beantworten. Vermeiden Sie Abkürzungen (außer allgemein üblichen, z. B. idx für Index). Für boolesche Variablen verwenden Sie Präfixe wie is, has, can.



2. Funktionen sollten klein sein und eine Sache tun



Das klassische Clean-Code-Prinzip — eine Funktion sollte genau eine Aufgabe erfüllen. Wenn Sie sich keinen kurzen und klaren Namen für eine Funktion ausdenken können, tut sie wahrscheinlich zu viel.



Schlechtes Beispiel:

void processData(std::vector<int>& data) {    // sortieren    std::sort(data.begin(), data.end());    // Duplikate entfernen    data.erase(std::unique(data.begin(), data.end()), data.end());    // Durchschnitt berechnen    double sum = 0;    for (int val : data) sum += val;    double avg = sum / data.size();    // ausgeben    std::cout << "Average: " << avg << std::endl;}


Gutes Beispiel:

std::vector<int> sortAndUnique(std::vector<int> data) {    std::sort(data.begin(), data.end());    data.erase(std::unique(data.begin(), data.end()), data.end());    return data;}

double calculateAverage(const std::vector<int>& data) { if (data.empty()) return 0.0; double sum = std::accumulate(data.begin(), data.end(), 0.0); return sum / data.size();}

void printAverage(const std::vector<int>& data) { auto processed = sortAndUnique(data); double avg = calculateAverage(processed); std::cout << "Average: " << avg << std::endl;}


Jede Funktion löst eine Aufgabe, ist leicht zu testen und wiederzuverwenden. Die Länge einer Funktion sollte 20-30 Zeilen nicht überschreiten — das ist eine gute Richtlinie.



3. Vermeiden Sie magische Zahlen und Duplikate



Magische Zahlen sind Zahlen, deren Bedeutung aus dem Kontext nicht klar ist. Verwenden Sie stattdessen benannte Konstanten.



Schlechtes Beispiel:

double calculatePrice(double base) {    return base * 1.2 + 5.0;}


Gutes Beispiel:

constexpr double TAX_RATE = 1.2;constexpr double DELIVERY_FEE = 5.0;

double calculatePrice(double basePrice) { return basePrice * TAX_RATE + DELIVERY_FEE;}


Gleiches gilt für Code-Duplizierung. Wenn Sie einen Codeblock mehr als einmal kopieren — extrahieren Sie ihn in eine Funktion. Das DRY-Prinzip (Don't Repeat Yourself) ist die Grundlage für wartbaren Code.



4. Kommentare sind keine Ausrede für schlechten Code



Der beste Kommentar ist gut geschriebener Code, der keiner Erklärung bedarf. Kommentare sollten erklären, warum der Code etwas Nicht-Offensichtliches tut, nicht was er tut.



Schlechtes Beispiel:



                
                

Blogs

Buchempfehlungen