Øvelse – Brug mellemrum til at gøre din kode nemmere at læse

Fuldført

Print- og webdesignere forstår, at hvis du placerer for mange oplysninger på et lille sted, overvældes seeren. Så de bruger strategisk mellemrum eller negativt mellemrum til at opdele oplysninger for at maksimere seerens mulighed for at forbruge det primære budskab i deres arbejde.

Udviklere kan bruge en lignende strategi, når de skriver kode i en editor. Ved at bruge blanktegn til at formidle betydning kan udviklere øge klarheden i deres kodes hensigt.

Hvad er mellemrum?

Udtrykket "blanktegn" refererer til individuelle mellemrum, der produceres af fanerne space bar, der er produceret af tab nøglen, og nye linjer, der er produceret af enter nøglen.

C#-compileren ignorerer mellemrum. Hvis du vil forstå, hvordan blanktegn ignoreres, og hvordan du maksimerer klarheden ved hjælp af blanktegn, skal du gennemgå følgende øvelse.

Tilføj kode for at illustrere, hvordan mellemrum ignoreres af C#-compileren

  1. Sørg for, at du har åbnet en tom Program.cs fil i Visual Studio Code.

    Hvis det er nødvendigt, skal du åbne Visual Studio Code og derefter udføre følgende trin for at forberede en Program.cs fil i Editor:

    1. Vælg Åbn mappe i menuen Filer.

    2. Brug dialogboksen Åbn mappe til at navigere til og derefter åbne mappen CsharpProjects .

    3. Vælg Program.cs i visningen Visual Studio Code EXPLORER.

    4. I menuen Visual Studio Code Selection skal du vælge Select All og derefter trykke på Delete.

  2. Angiv følgende kode:

    // Example 1:
    Console
    .
    WriteLine
    (
    "Hello Example 1!"
    )
    ;
    
    // Example 2:
    string firstWord="Hello";string lastWord="Example 2";Console.WriteLine(firstWord+" "+lastWord+"!");
    
  3. Vælg Gemi menuen Visual Studio Code File .

  4. Hvis du vil åbne en Terminal på placeringen af mappen TestProject i STIFINDER-visningen, skal du højreklikke på TestProject og derefter vælge Åbn i integreret terminal.

  5. Skriv dotnet run i kommandoprompten Terminal, og tryk derefter på Enter.

    Du bør kunne se følgende output:

    Hello Example 1!
    Hello Example 2!
    
  6. Brug et øjeblik på at overveje, hvad dette resultat fortæller dig om, hvordan du skal bruge mellemrum i din kode.

    Disse to kodeeksempler illustrerer to vigtige idéer:

    • Mellemrum betyder ikke noget for compileren. Dog...
    • Mellemrum, når de bruges korrekt, kan øge din evne til at læse og forstå koden.

    Du skriver sandsynligvis din kode én gang, men skal læse koden flere gange. Derfor skal du fokusere på læsbarheden af den kode, du skriver. Med tiden får du en fornemmelse af, hvornår og hvordan du bruger mellemrum, f.eks. mellemrumstegn, faner og nye linjer.

    Tidlig vejledning:

    • Hver komplet kommando (en sætning) hører til på en separat linje.
    • Hvis en enkelt kodelinje bliver lang, kan du opdele den. Du bør dog undgå vilkårligt at opdele en enkelt sætning til flere linjer, indtil du har en god grund til at gøre det.
    • Brug et mellemrum til venstre og højre for tildelingsoperatoren.
  7. Erstat den eksisterende kode med følgende kode:

    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;
        }
    }
    

    Bemærk, at denne kode ikke indeholder meget mellemrum. Denne kode bruges til at illustrere en metode til at føje mellemrum til dine programmer. Effektiv blanktegn bør gøre det lettere at forstå, hvad din kode gør.

    Seddel

    Koden bruger klassen Random til at hjælpe med at udvikle et simuleret terningspil, hvor den samlede værdi fra tre kast bruges til at evaluere en "vindende" score. Koden tildeler ekstra point for rullende doubler eller tripler. Du behøver ikke at forstå denne kode fuldt ud for at se fordelen ved at inkludere mellemrum.

  8. Brug et øjeblik på at overveje, hvordan du vil bruge mellemrum til at forbedre læsbarheden af denne kode.

    Der er to funktioner i denne kode, som du kan notere dig:

    • Der er ingen lodrette mellemrum i dette kodeeksempel. Der er med andre ord ingen tomme linjer, der adskiller kodelinjerne. Det hele løber sammen til én tæt kodeliste.
    • Kodeblokke som defineret af krøllede klammeparenteser { } komprimeres sammen, hvilket gør det vanskeligt at skelne mellem deres grænser visuelt.

    For at forbedre læsbarheden introducerer du generelt en tom linje mellem to, tre eller fire kodelinjer, der udfører lignende eller relaterede ting.

    Udtryk for din kode ved hjælp af lodrette mellemrum er subjektivt. Det er muligt, at to udviklere ikke er enige om, hvad der er mest læsevenligt, eller hvornår der skal tilføjes mellemrum. Brug din bedste dømmekraft.

  9. Hvis du vil tilføje lodrette mellemrum, der forbedrer læsbarheden, skal du opdatere din kode på følgende måde:

    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;
        }
    }
    

    Din første linje med mellemrum bruges til at adskille erklæringen af variablen dice fra de kodelinjer, der bruges til at tildele værdier til dine rullevariabler. Denne adskillelse gør det nemmere at se, hvordan dice den bruges i din kode.

    Din næste linje med mellemrum adskiller erklæringen af dine rullevariabler fra erklæringen af total. Det er nyttigt at gruppere erklæringen af dine tre rullevariabler på to måder. Først oprettes der en gruppe kodelinjer, der indeholder relaterede variabler. For det andet er variabelnavnene så ens, og erklæringen følger det samme mønster. Så gruppering af dem sammen trækker dit øje til lighederne og hjælper med at eksponere forskellene.

    Endelig adskiller din tredje linje med mellemrum en anden gruppe relaterede sætninger fra dine indlejrede if sætninger. Gruppen af sætninger, der indeholder erklæringen af total , og Console.WriteLine() metoden er relateret efter formål i stedet for udseende. Din kode fokuserer på den samlede værdi, der opnås med de tre terninger, og om kast inkluderede doubler eller tripler. Disse linjer er relateret, fordi du skal beregne total og rapportere resultaterne af rullen til brugeren.

    Nogle udviklere kan hævde, at du skal tilføje en tom linje mellem erklæringen af total og Console.WriteLine(). Igen, valget af blanktegn er op til din bedste dømmekraft. Du bør beslutte, hvilket der er mere læsevenligt for dig, og bruge denne typografi på en ensartet måde.

    Det eneste, du har tilbage, er sætningen if . Du kan undersøge det nu.

  10. Med fokus på kodelinjerne under nøgleordet if skal du ændre din kode på følgende måde:

    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. Bemærk, at du har flyttet krøllede klammeparenteser til deres egen linje for at forbedre afstanden.

    Symbolerne { og } opretter kodeblokke. Mange C#-konstruktioner kræver kodeblokke. Disse symboler skal placeres på en separat linje, så deres grænser er tydeligt synlige og læsbare.

    Det er desuden vigtigt at bruge nøglen tab til at linje op kodebloksymboler under det nøgleord, de tilhører. Læg f.eks. mærke til den kodelinje, der starter med nøgleordet if. Under denne linje er symbolet { . Denne justering gør det nemt at forstå, at sætningen {if "tilhører". Desuden er det sidste } symbol linjer op med sætningen if samt. Kombinationen af justering og indrykning gør det nemt at forstå, hvor kodeblokken starter og slutter.

    Kodelinjerne i denne kodeblok indrykkes, hvilket angiver, at de "tilhører" denne kodeblok.

    Du følger et lignende mønster med den indre if sætning og else sætning samt koden i disse kodeblokke.

Det er ikke alle, der er enige i denne stilvejledning til at inkludere mellemrum. Du bør dog overveje at bruge denne vejledning som udgangspunkt, når du skriver kode. Fremover kan du være målrettet, når du træffer en beslutning om at afvige fra denne vejledning.

Resumé

De vigtigste elementer i denne øvelse:

  • Brug mellemrum med omveje for at forbedre læsbarheden af din kode.
  • Brug linjefeeds til at oprette tomme linjer for at adskille kodeudtryk. Et udtryk indeholder kodelinjer, der ligner hinanden, eller som arbejder sammen.
  • Brug linjefeeds til at adskille kodebloksymboler, så de er på deres egen kodelinje.
  • Brug nøglen tab til at linje en kodeblok op med det nøgleord, de er knyttet til.
  • Indryk kode i en kodeblok for at vise ejerskab.