Beherrschen von Kontrollstrukturen in C++: Navigieren durch Auswahlmöglichkeiten

vish234

Mitglied
Ich tauche in die Welt der Kontrollstrukturen in C++ ein und suche nach Anleitung für deren effektive Verwendung. Betrachten Sie den folgenden Codeausschnitt, der verschiedene Kontrollstrukturen zeigt:

C++:
#include <iostream>

int main() {
    int num = 7;

    // Example of if-else statement
    if (num > 5) {
        std::cout << "Number is greater than 5." << std::endl;
    } else {
        std::cout << "Number is not greater than 5." << std::endl;
    }

    // Example of switch statement
    switch (num) {
        case 5:
            std::cout << "Number is 5." << std::endl;
            break;
        case 7:
            std::cout << "Number is 7." << std::endl;
            break;
        default:
            std::cout << "Number is neither 5 nor 7." << std::endl;
    }

    // Example of a while loop
    int i = 0;
    while (i < 3) {
        std::cout << "Iteration using while loop: " << i << std::endl;
        i++;
    }

    // Example of a for loop
    for (int j = 0; j < 3; j++) {
        std::cout << "Iteration using for loop: " << j << std::endl;
    }

    return 0;
}

Wie kann ich angesichts dieser Demonstration von if-else-Anweisungen, switch-Anweisungen, while-Schleifen und for-Schleifen effektiv zwischen diesen Kontrollstrukturen basierend auf verschiedenen Szenarien in der C++-Programmierung wählen? Ich habe mir zahlreiche Websites angesehen, aber gibt es Best Practices oder Codierungsmuster, die man bei der Entscheidung, welche Kontrollstruktur verwendet werden soll, im Auge behalten sollte, insbesondere im Hinblick auf Lesbarkeit, Leistung und Wartbarkeit?
 

LimDul

Top Contributor
Pauschal kann man das so nicht sagen.

Grundsätzlich würde ich folgende Faustregeln aufstellen
  • Switch/Case wenn es mehrere (größer 2) Möglichkeiten gibt und insbesondere wenn die Möglichkeiten eindeutig durch case Statements abgrenzbar sind. In der Regel für Enum/Enum-artige Datentypen geeignet.
  • For Loops wenn man über eine Liste oder listenartige Elemente iteriert.
  • while Loops für Loops, die nicht mehr oder nur durch Krämpfe in den Bedingungen durch for loops abgebildet werden könne
  • If-Statements für alles was sonst an Bedingungen existiert.

Der Unterschied zwischen for/while und if/switch ist ein fundamentaler - if/switch wird genau 1x durchlaufen, während while/for zwischen 0 und beliebig oft durchlaufen wird. Das heißt je nach Anforderung geht eh nur eine der beiden Seiten.

Ansonsten ist ein guter Lackmus-Test immer "Ist es lesbar & verständlich". Guter Code sollte im Sinn von Clean Code (https://de.wikipedia.org/wiki/Clean_Code / https://clean-code-developer.de/) lesbar sein. Das heißt, die Kontrollstruktur, deren Code am Ende am einfachsten lesbar ist, ist die sinnvollste. Das geht allerdings über die Wahl der Kontrollstruktur hinaus.

Beispiel:
Code:
if (x >= 18 && x<=67 && y == 2) {
....
}
vs.
Code:
if (isErwebsfaehigesAlter(x) && isGeschlechtMaennlich(y)) {
...
}

boolean isErwebsfaehigesAlter(int alter) {
return alter >= 18 && alter <= 67;
}

boolean isGeschlechtMaennlich(int geschlecht) {
return geschlecht == 2
}
Was davon ist besser lesbar? Das kann man noch weitertreiben, die 2 durch eine Konstante ersetzen, anstelle von int einen Enum-Typ verwenden etc.
 

Neue Themen


Oben