Oefening: witruimte gebruiken om uw code beter leesbaar te maken

Voltooid

Afdruk- en webontwerpers begrijpen dat het plaatsen van te veel informatie in een kleine ruimte de kijker overweldigt. Ze maken dus strategisch gebruik van witruimte, ook wel negatieve ruimte genoemd, om informatie op te delen. Lezers kunnen de primaire boodschap van hun werk op die manier maximaal tot zich nemen.

Ook ontwikkelaars kunnen zo'n strategie gebruiken wanneer ze code schrijven in een editor. Door witruimte te gebruiken om de boodschap over te brengen, kunnen ontwikkelaars ervoor zorgen dat de intentie van hun code duidelijker wordt.

Wat is witruimte?

De term 'witruimte' verwijst naar afzonderlijke ruimten die door de space bar worden geproduceerd, tabs die door de toets tab worden gemaakt en nieuwe regels die met de enter-toets worden gemaakt.

In het C#-compileerprogramma wordt witruimte genegeerd. Als u wilt weten hoe witruimte wordt genegeerd en hoe u de duidelijkheid kunt maximaliseren met behulp van witruimte, voert u de volgende oefening uit.

Code toevoegen om te illustreren hoe witruimte wordt genegeerd door de C#-compiler

  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 Map openen in het menu Bestand.

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

    3. Selecteer Program.cs in de weergave Visual Studio Code EXPLORER.

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

  2. Voer de volgende code in:

    // Example 1:
    Console
    .
    WriteLine
    (
    "Hello Example 1!"
    )
    ;
    
    // Example 2:
    string firstWord="Hello";string lastWord="Example 2";Console.WriteLine(firstWord+" "+lastWord+"!");
    
  3. Selecteer Opslaan in het menu Visual Studio Code File.

  4. Als u in de EXPLORER-weergave een Terminal wilt openen op de locatie van de map TestProject, klikt u met de rechtermuisknop op TestProject en selecteert u Openen in geïntegreerde terminal.

  5. Typ dotnet run bij de Terminal-opdrachtprompt en druk op Enter.

    U moet de volgende uitvoer zien:

    Hello Example 1!
    Hello Example 2!
    
  6. Neem even de tijd om na te gaan wat dit resultaat u vertelt over hoe u witruimte in uw code moet gebruiken.

    Deze twee codevoorbeelden laten twee belangrijke ideeën zien:

    • Witruimte is niet belangrijk voor het compileerprogramma. Maar:
    • Wanneer u witruimte op de juiste manier gebruikt, helpt u dit om de code beter te lezen en te begrijpen.

    U schrijft uw code waarschijnlijk eenmaal, maar moet de code meerdere keren lezen. Daarom moet u zich richten op de leesbaarheid van de code die u schrijft. Na verloop van tijd krijgt u een idee van wanneer en hoe u witruimte gebruikt, zoals het spatieteken, tabbladen en nieuwe regels.

    Vroegtijdige richtlijnen:

    • Elke volledige opdracht (een instructie) hoort op een afzonderlijke regel te staan.
    • Als één coderegel te lang wordt, kunt u deze opdelen. Vermijd echter dat u één instructie willekeurig in meerdere regels opdeelt, tenzij u daar een goede reden voor hebt.
    • Zet links en rechts naast de toewijzingsoperator een spatie.
  7. Vervang uw bestaande code door de volgende code:

    Random dice = new Random();
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    int total = roll1 + roll2 + roll3;
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) {
        if ((roll1 == roll2) && (roll2 == roll3)) {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6; 
        } else {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    }
    

    U ziet dat deze code niet veel witruimte bevat. Deze code wordt gebruikt om een benadering te illustreren voor het toevoegen van witruimte aan uw toepassingen. Effectieve witruimte moet het gemakkelijker maken om te begrijpen wat uw code doet.

    Notitie

    De code maakt gebruik van de Random klasse om een gesimuleerd dobbelsteenspel te ontwikkelen, waarbij de totale waarde van drie rollen wordt gebruikt om een 'winnende' score te evalueren. De code verwijst naar extra punten voor het rollen van doubles of triples. U hoeft deze code niet volledig te begrijpen om het voordeel van het opnemen van witruimte te zien.

  8. Neem even de tijd om na te gaan hoe u witruimte zou gebruiken om de leesbaarheid van deze code te verbeteren.

    Er zijn twee functies van deze code waarmee u rekening moet houden:

    • Dit codevoorbeeld bevat geen verticale witruimte. Met andere woorden: er zijn geen lege regels die de coderegels scheiden. Alles wordt samengevoegd in één lijst met compacte codes.
    • De codeblokken die worden gedefinieerd door de openings- en afsluitingsaccolades { }, worden samen gecomprimeerd waardoor de grenzen moeilijk te onderscheiden zijn.

    Over het algemeen kunt u, om de leesbaarheid te verbeteren, een lege regel introduceren tussen twee, drie of vier regels code die vergelijkbare of gerelateerde dingen doen.

    Het formuleren van uw code met behulp van verticale witruimte is subjectief. Het is mogelijk dat twee ontwikkelaars het niet eens zijn over wat het meest leesbaar is of wanneer ze witruimte moeten toevoegen. Gebruik hiervoor uw gezonde verstand.

  9. Als u verticale witruimte wilt toevoegen die de leesbaarheid verbetert, werkt u de code als volgt bij:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) {
        if ((roll1 == roll2) && (roll2 == roll3)) {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6; 
        } else {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    }
    

    Uw eerste regel witruimte wordt gebruikt om de declaratie van de dice variabele te scheiden van de coderegels die worden gebruikt om waarden toe te wijzen aan uw roll-variabelen. Deze scheiding maakt het gemakkelijker om te zien hoe dice wordt gebruikt in uw code.

    De volgende regel witruimte scheidt de declaratie van uw rolvariabelen van de declaratie van total. Het groeperen van de declaratie van uw drie roll-variabelen is op twee manieren handig. Eerst wordt er een groep coderegels gemaakt die gerelateerde variabelen bevat. Ten tweede zijn de namen van variabelen zo vergelijkbaar en de declaratie volgt hetzelfde patroon. Als u ze groepeert, ziet u de overeenkomsten en kunt u de verschillen zichtbaar maken.

    Ten slotte scheidt uw derde regel witruimte een andere groep gerelateerde instructies van uw geneste if instructies. De groep instructies die de declaratie van total en de Console.WriteLine() methode bevat, is gerelateerd aan het doel in plaats van uiterlijk. Uw code is gericht op de totale waarde die wordt bereikt door de drie dobbelstenen en of het roll doubles of triples bevat. Deze regels zijn gerelateerd omdat u de resultaten van de roll naar de gebruiker moet berekenen total en rapporteren.

    Sommige ontwikkelaars kunnen beweren dat u een lege regel moet toevoegen tussen de declaratie van total en de Console.WriteLine(). Nogmaals, de keuze van witruimte is aan uw beste oordeel. U moet beslissen welke beter leesbaar is voor u en die stijl consistent gebruiken.

    Alles wat je nog hebt, is de if verklaring. U kunt dat nu onderzoeken.

  10. Pas de code als volgt aan op de regels met code onder het if trefwoord:

    Random dice = new Random();
    
    int roll1 = dice.Next(1, 7);
    int roll2 = dice.Next(1, 7);
    int roll3 = dice.Next(1, 7);
    
    int total = roll1 + roll2 + roll3;
    Console.WriteLine($"Dice roll: {roll1} + {roll2} + {roll3} = {total}");
    
    if ((roll1 == roll2) || (roll2 == roll3) || (roll1 == roll3)) 
    {
        if ((roll1 == roll2) && (roll2 == roll3)) 
        {
            Console.WriteLine("You rolled triples!  +6 bonus to total!");
            total += 6; 
        } 
        else 
        {
            Console.WriteLine("You rolled doubles!  +2 bonus to total!");
            total += 2;
        }
    }
    
  11. U ziet dat u de opening en het sluiten van accolades naar hun eigen lijn hebt verplaatst om de afstand te verbeteren.

    Met de symbolen { en } maakt u codeblokken. Voor veel C#-constructies zijn codeblokken vereist. Deze symbolen moeten op een afzonderlijke regel worden geplaatst, zodat de grenzen duidelijk zichtbaar en leesbaar zijn.

    Daarnaast is het belangrijk om de tab-toets te gebruiken om de codebloksymbolen onder het trefwoord waarvan ze deel uitmaken te vermelden. U ziet bijvoorbeeld dat de coderegel met het trefwoord if begint. Onder deze regel bevindt zich het {-symbool. Deze uitlijning maakt het gemakkelijk om te begrijpen dat de { instructie 'behoort tot' de if instructie. Bovendien wordt het laatste } symbool ook weergegeven met de if instructie. De combinatie van uitlijning en inspringing maakt het eenvoudig om te begrijpen waar het codeblok begint en eindigt.

    De coderegels in dit codeblok worden ingesprongen, wat aangeeft dat ze 'behoren' tot dit codeblok.

    U volgt een vergelijkbaar patroon met de interne if instructie en else instructie en de code in die codeblokken.

Niet iedereen is het eens met deze stijlrichtlijnen voor het opnemen van witruimte. U moet echter overwegen deze richtlijnen als uitgangspunt te gebruiken bij het schrijven van code. In de toekomst kunt u doelgericht zijn bij het nemen van een beslissing om af te wijken van deze richtlijnen.

Samenvatting

De belangrijkste opgedane kennis in deze oefening:

  • Gebruik witruimte verstandig om de leesbaarheid van uw code verbeteren.
  • Gebruik regelinvoer om lege regels te maken zodat u codewoordgroepen kunt scheiden. Een woordgroep bevat regels code die vergelijkbaar zijn of samenwerken.
  • Gebruik regelinvoer om codebloksymbolen te scheiden zodat ze zich op hun eigen coderegel bevinden.
  • Gebruik de tab-toets om een codeblok op één lijn te brengen met het trefwoord waaraan dit blok is gekoppeld.
  • Laat de code in een codeblok inspringen om het eigendom weer te geven.