Oefening: codeblokken verwijderen uit if-instructies

Voltooid

Softwareontwikkelaars vinden het geweldig wanneer ze code kunnen schrijven waarmee toetsaanslagen en visuele ruimte worden opgeslagen zonder dat ze de leesbaarheid opofferen. Pas alleen de woordgroep 'less is more' toe in het ontwikkelingsproces wanneer uw code beter leesbaar en begrijpelijker wordt.

Als een codeblok slechts één regel code nodig heeft, hoeft u waarschijnlijk geen formeel codeblok met haakjes te gebruiken. Hoewel u uw code technisch gezien niet eens hoeft te scheiden in meerdere regels, kan het combineren van instructies op één regel ervoor zorgen dat uw code moeilijk te lezen is.

Het verwijderen van de accolades, zoals hierboven beschreven, is een stijlverandering die geen invloed zal hebben op de functionaliteit van uw code. U moet echter stappen ondernemen om ervoor te zorgen dat uw wijzigingen geen negatieve invloed hebben op de leesbare code. U kunt de impact van het verwijderen van de accolades en witruimte evalueren en vervolgens teruggaan naar de oorspronkelijke code als u merkt dat de wijzigingen uw code minder leesbaar hebben gemaakt.

Een voorbeeld maken van een if-instructie die gebruikmaakt van een codeblok

  1. Zorg ervoor dat u een leeg Program.cs bestand hebt geopend in Visual Studio Code.

    Open Zo nodig Visual Studio Code en voer vervolgens de volgende stappen uit om een Program.cs-bestand voor te bereiden in de editor:

    1. Selecteer in het menu Bestand de optie Map openen.

    2. Gebruik het dialoogvenster Map openen om naar de map CsharpProjects te navigeren en vervolgens te openen.

    3. Selecteer Program.cs in het deelvenster Visual Studio Code EXPLORER.

    4. Selecteer Alles selecteren in het menu Selectie van Visual Studio Code en druk vervolgens op Delete.

  2. Typ de volgende code in de Visual Studio Code-editor:

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. Sla uw codebestand op en gebruik Visual Studio Code om uw code uit te voeren.

    Voer dotnet run vanaf de Terminal-opdrachtprompt in om uw code uit te voeren.

  4. Controleer of u de volgende uitvoer ziet:

    True
    

    Uw code vertegenwoordigt een goed uitgangspunt, maar u hebt een codeblok dat één regel code bevat. Is het in dit geval noodzakelijk om een codeblok te definiëren?

Verwijder de accolades

Een codeblok wordt uitgevoerd met de bovenstaande code wanneer flagtrue is. Aangezien dit codeblok slechts één coderegel bevat, heeft u de optie om de accolades te verwijderen.

  1. Werk uw code als volgt bij in de Visual Studio Code-editor:

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

    Opmerking

    Als u de accolades verwijdert, verandert dat niets aan het feit dat Console.WriteLine(flag); het codeblok voor de if instructie is.

  2. Sla uw codebestand op en gebruik Visual Studio Code om uw code uit te voeren.

  3. U ziet dat de uitvoer hetzelfde is als voorheen.

    U zou nog steeds de volgende uitvoer moeten zien:

    True
    

    Er zijn echter twee regels minder code. Het belangrijkste is dat de coderegel onder de if ingesprongen code nog steeds gemakkelijk leesbaar is.

De leesbaarheid van enkelregelige if-statements bekijken

In deze stap gaat u kijken naar een geval waarin de leesbaarheid van code negatief kan worden beïnvloed.

Omdat zowel de if instructie als de methode-aanroep Console.WriteLine() kort zijn, kunt u deze misschien op één regel combineren. Met de C#-syntaxis voor de if instructie kunt u op deze manier instructies combineren.

  1. Werk uw code als volgt bij in de Visual Studio Code-editor:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. Sla uw codebestand op en gebruik Visual Studio Code om uw code uit te voeren.

  3. U ziet dat de uitvoer nog steeds hetzelfde is.

  4. Neem even de tijd om rekening te houden met de leesbaarheid van code.

    Stel dat de vorige twee codevoorbeelden zijn genest binnen een groter gedeelte van de code. Het combineren van code-instructies (zoals in stap 4) kan het moeilijker maken om te lezen.

    Wanneer u een if instructie implementeert die een codeblok met één instructie bevat, raadt Microsoft u aan deze conventies te overwegen:

    • Gebruik nooit formulier met één regel (bijvoorbeeld: als (vlag) Console.WriteLine(vlag);
    • Het gebruik van accolades wordt altijd geaccepteerd en vereist als een blok van een if/else if/.../else samengestelde instructie accolades gebruikt of als één instructietekst meerdere regels omvat.
    • Accolades mogen alleen worden weggelaten als de hoofdtekst van elk blok dat is gekoppeld aan een if/else if/.../else samengestelde instructie op één regel wordt geplaatst.
  5. Als u de leesbaarheid van grotere if-elseif-else-constructies wilt onderzoeken, werkt u uw code als volgt bij:

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. Sla uw codebestand op en gebruik Visual Studio Code om uw code uit te voeren.

    Wanneer u de code uitvoert, moet deze de volgende uitvoer produceren:

    Found Steve
    

    De code wordt uitgevoerd, maar deze regels met code zijn complex en moeilijk te lezen. U kunt de code opnieuw opmaken om een regeleinde op te nemen na de if, else if, en else regels.

  7. Vergelijk de code die u zojuist hebt uitgevoerd met de volgende code:

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

    U ziet hoe eenvoudiger het is om het tweede codevoorbeeld te lezen.

Samenvatting

Hier volgen enkele belangrijke dingen die u moet onthouden over if instructiecodeblokken en leesbaarheid:

  • Als u merkt dat er slechts één regel code in de codeblok van een if-elseif-else instructie staat, kunt u de accolades van het codeblok en de witruimte verwijderen. Microsoft raadt aan dat accolades consistent gebruikt worden voor alle codeblokken van een if-elseif-else statement (ofwel overal aanwezig zijn ofwel overal verwijderd worden).
  • Verwijder alleen de accolades van een codeblok wanneer dit de code leesbaarder maakt. Het is altijd acceptabel om accolades op te nemen.
  • Verwijder alleen de regelterugloop als dit de leesbaarheid van de code verbetert. Microsoft stelt voor dat uw code beter leesbaar is wanneer elke instructie op een eigen coderegel wordt geplaatst.