Übung – Entfernen von Codeblöcken aus if-Anweisungen

Abgeschlossen

Softwareentwickler lieben es, wenn sie Code schreiben können, der Tastaturanschläge und visuellen Raum speichert, ohne die Lesbarkeit zu beeinträchtigen. Wenden Sie im Entwicklungsprozess nur den Ausdruck "weniger ist mehr" an, wenn der Code lesbarer und verständlicher wird.

Wenn ein Codeblock nur eine Codezeile benötigt, müssen Sie wahrscheinlich keinen formalen Codeblock mit geschweiften Klammern definieren. Obwohl Sie Ihren Code technisch nicht einmal in mehrere Zeilen trennen müssen, kann die Kombination von Anweisungen in einer einzelnen Zeile ihren Code schwer lesen lassen.

Das Entfernen der geschweiften Klammern, wie oben beschrieben, ist eine stilistische Änderung, die sich nicht auf die Funktionalität Ihres Codes auswirken sollte. Sie sollten jedoch Maßnahmen ergreifen, um sicherzustellen, dass ihre Änderungen sich nicht negativ auf die Lesbarkeit des Codes auswirken. Sie können die Auswirkungen des Entfernens der geschweiften Klammern und des Leerzeichens auswerten und dann wieder zum ursprünglichen Code zurückkehren, wenn Sie feststellen, dass die Änderungen ihren Code weniger lesbar gemacht haben.

Erstellen eines Beispiels für eine If-Anweisung, die einen Codeblock verwendet

  1. Stellen Sie sicher, dass eine leere „Program.cs“-Datei in Visual Studio Code geöffnet ist.

    Öffnen Sie bei Bedarf Visual Studio Code, und führen Sie dann die folgenden Schritte aus, um eine „Program.cs“-Datei im Editor vorzubereiten:

    1. Wählen Sie im Menü "Datei " die Option "Ordner öffnen" aus.

    2. Verwenden Sie das Dialogfeld „Ordner öffnen“, um zum Ordner CsharpProjects zu navigieren und diesen dann zu öffnen.

    3. Wählen Sie im Visual Studio Code EXPLORER-Bereich Program.cs aus.

    4. Wählen Sie im Menü Visual Studio Code Selection die Option Alle auswählen aus, und drücken Sie dann die Entfernen-Taste.

  2. Geben Sie den folgenden Code in den Visual Studio Code-Editor ein:

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.

    Geben Sie dotnet run über die Eingabeaufforderung am Terminal ein, um Ihren Code auszuführen.

  4. Überprüfen Sie, ob die folgende Ausgabe angezeigt wird:

    True
    

    Ihr Code stellt einen guten Ausgangspunkt dar, aber Sie haben einen Codeblock, der eine einzelne Codezeile enthält. Ist es in diesem Fall notwendig, einen Codeblock zu definieren?

Entfernen der geschweiften Klammern

Der obige Code führt einen Codeblock aus, wenn flagtrue ist. Da dieser Codeblock eine einzelne Codezeile enthält, haben Sie die Möglichkeit, die geschweiften Klammern zu entfernen.

  1. Aktualisieren Sie Ihren Code im Visual Studio Code-Editor wie folgt:

    bool flag = true;
    if (flag)
        Console.WriteLine(flag);
    

    Hinweis

    Durch das Entfernen der geschweiften Klammern ändert sich nicht die Tatsache, dass Console.WriteLine(flag); der Codeblock für die if Anweisung ist.

  2. Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.

  3. Beachten Sie, dass die Ausgabe die gleiche ist wie zuvor.

    Die folgende Ausgabe sollte weiterhin angezeigt werden:

    True
    

    Es gibt jedoch zwei weniger Codezeilen. Das Wichtigste ist, dass die Codezeile unterhalb des if eingerückt ist, so dass Ihr Code immer noch gut lesbar ist.

Untersuchung der Lesbarkeit von einzeiligen if-Anweisungen

In diesem Schritt sehen Sie sich einen Fall an, in dem die Lesbarkeit von Code möglicherweise negativ beeinträchtigt wird.

Da sowohl die if-Anweisung als auch der Console.WriteLine()-Methodenaufruf kurz sind, könnten Sie versucht sein, sie in einer einzigen Zeile zu kombinieren. Schließlich können Sie mit der C#-Syntax für die if Anweisung Anweisungen auf diese Weise kombinieren.

  1. Aktualisieren Sie Ihren Code im Visual Studio Code-Editor wie folgt:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.

  3. Beachten Sie, dass die Ausgabe immer noch dieselbe ist.

  4. Nehmen Sie sich eine Minute Zeit, um die Lesbarkeit von Code zu berücksichtigen.

    Stellen Sie sich die beiden vorherigen Codebeispiele vor, die in einem größeren Codeabschnitt geschachtelt sind. Das Kombinieren von Codeanweisungen (wie in Schritt 4) könnte das Lesen erschweren.

    Bei der Implementierung einer if Anweisung, die einen einzelnen Anweisungs-Block enthält, empfiehlt Microsoft, die folgenden Konventionen zu berücksichtigen:

    • Verwenden Sie niemals einzeilige Anweisungen (z. B. if (flag) Console.WriteLine(flag);
    • Die Verwendung von geschweiften Klammern ist immer zulässig und erforderlich, wenn ein beliebiger Block einer zusammengesetzten if/else if/.../else-Anweisung geschweifte Klammern verwendet oder wenn sich ein einzelner Anweisungstext über mehrere Zeilen erstreckt.
    • Klammern können nur weggelassen werden, wenn der Körper jedes Blocks, der mit einer if/else if/..../else-Anweisung verknüpft ist, in einer einzigen Zeile steht.
  5. Um die Lesbarkeitswirkungen für größere if-else-Konstrukte zu untersuchen, aktualisieren Sie den Code wie folgt:

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus.

    Wenn Sie den Code ausführen, sollte er die folgende Ausgabe erzeugen:

    Found Steve
    

    Der Code wird ausgeführt, aber diese Codezeilen sind eng angeordnet und schwer zu lesen. Möglicherweise möchten Sie den Code neu formatieren, um einen Zeilenumbruch nach den if, else ifund else Anweisungen einzuschließen.

  7. Vergleichen Sie den Code, den Sie gerade ausgeführt haben, mit dem folgenden Code:

    string name = "steve";
    
    if (name == "bob")
        Console.WriteLine("Found Bob");
    else if (name == "steve") 
        Console.WriteLine("Found Steve");
    else
        Console.WriteLine("Found Chuck");
    

    Beachten Sie, wie viel einfacher es ist, das zweite Codebeispiel zu lesen.

Zusammenfassung

Hier finden Sie einige wichtige Hinweise zur Lesbarkeit von Codeblöcken mit if-Anweisungen:

  • Wenn Sie feststellen, dass nur eine Codezeile in den Codeblöcken einer if-elseif-else-Anweisung aufgeführt ist, können Sie die geschweiften Klammern des Codeblocks und die Leerzeichen entfernen. Microsoft empfiehlt, geschweifte Klammern konsequent für alle Codeblöcke einer if-elseif-else-Anweisung zu verwenden (entweder durchgängig vorhanden oder weggelassen).
  • Entfernen Sie nur die geschweiften Klammern eines Codeblocks, wenn sie den Code besser lesbar macht. Geschweifte Klammern können immer eingefügt werden.
  • Entfernen Sie den Zeilenvorschub nur, wenn dadurch der Code besser lesbar wird. Microsoft schlägt vor, dass Ihr Code besser lesbar ist, wenn jede Anweisung in einer eigenen Codezeile platziert wird.