Øvelse – Fjern kodeblokker fra hvis setninger

Fullført

Programvareutviklere elsker det når de kan skrive kode som sparer tastetrykk og visuell plass uten å ofre lesbarheten. Bruk bare uttrykket "mindre er mer" i utviklingsprosessen når det gjør koden mer lesbar og forståelig.

Hvis en kodeblokk bare trenger én kodelinje, er det sannsynlig at du ikke trenger å definere en formell kodeblokk ved hjelp av klammeparenteser. Selv om du teknisk sett ikke trenger å skille koden i flere linjer, kan det å kombinere setninger på én enkelt linje gjøre koden vanskelig å lese.

Fjerning av klammeparenteser som beskrevet ovenfor, er en stilistisk endring som ikke skal påvirke funksjonaliteten til koden. Du bør imidlertid gjøre noe for å sikre at endringene ikke påvirker hvor lesbar koden er. Du kan evaluere virkningen av å fjerne klammeparenteser og mellomrom, og deretter gå tilbake til den opprinnelige koden hvis du finner ut at endringene gjorde koden mindre lesbar.

Opprette et eksempel på en hvis-setning som bruker en kodeblokk

  1. Kontroller at du har en tom Program.cs fil åpen i Visual Studio Code.

    Hvis det er nødvendig, åpner du Visual Studio Code, og deretter fullfører du følgende trinn for å klargjøre en Program.cs fil i redigeringsprogrammet:

    1. Velg Åpne mappeFil-menyen.

    2. Bruk dialogboksen Åpne mappe til å navigere til, og åpne deretter CsharpProjects-mappen .

    3. Velg Program.cs i Visual Studio Code EXPLORER-panelet.

    4. Velg Merk alt på menyen For valg av Visual Studio-kode, og trykk deretter delete-tasten.

  2. Skriv inn følgende kode i Visual Studio Code Editor:

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. Lagre kodefilen, og bruk deretter Visual Studio Code til å kjøre koden.

    Skriv inn dotnet run fra Terminal-ledeteksten for å kjøre koden.

  4. Kontroller at du ser følgende utdata:

    True
    

    Koden representerer et godt utgangspunkt, men du har en kodeblokk som inneholder én enkelt kodelinje. I dette tilfellet er det nødvendig å definere en kodeblokk?

Fjerne klammeparentesene

Koden ovenfor utfører en kodeblokk når flag den er true. Siden denne kodeblokken inneholder én enkelt kodelinje, har du mulighet til å fjerne klammeparentesene.

  1. Oppdater koden i Visual Studio Code Editor på følgende måte:

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

    Merk deg

    Fjerning av klammeparenteser endrer ikke det faktum at det Console.WriteLine(flag); er kodeblokken for setningen if .

  2. Lagre kodefilen, og bruk deretter Visual Studio Code til å kjøre koden.

  3. Legg merke til at utdataene er de samme som før.

    Du skal fortsatt se følgende utdata:

    True
    

    Det er imidlertid to færre linjer med kode. Viktigst av alt, med kodelinjen under innrykket if , er koden fortsatt lett å lese.

Undersøk lesbarheten til enlinjet skjema hvis setninger

I dette trinnet skal du se på en sak der kodelesbarhet kan bli negativt påvirket.

Siden både uttrykket if og metodekallet er Console.WriteLine() kort, kan du bli fristet til å kombinere dem på én enkelt linje. C#-syntaksen for setningen if lar deg tross alt kombinere setninger på denne måten.

  1. Oppdater koden i Visual Studio Code Editor på følgende måte:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. Lagre kodefilen, og bruk deretter Visual Studio Code til å kjøre koden.

  3. Legg merke til at utdataene fortsatt er de samme.

  4. Ta et minutt å vurdere kodelesbarhet.

    Tenk deg de to foregående kodeeksempler nestet i en større del av koden. Kombinasjon av kodesetninger (som du gjorde i trinn 4) kan gjøre det vanskeligere å lese.

    Når du implementerer en if setning som inneholder en kodeblokk med én setning, anbefaler Microsoft at du vurderer disse konvensjonene:

    • Bruk aldri enlinjet skjema (for eksempel: hvis (flagg) Console.WriteLine(flagg);
    • Bruk av klammeparenteser godtas alltid, og kreves hvis en blokk av en hvis/ellers hvis/.../annet sammensatt setning bruker klammeparenteser eller hvis en enkelt setningstekst strekker seg over flere linjer.
    • Klammeparenteser kan bare utelates hvis brødteksten i hver blokk som er knyttet til en hvis/ellers hvis/.../annet sammensatt setning plasseres på én enkelt linje.
  5. Hvis du vil undersøke lesbarhetseffekten for større hvis-eller-annet-konstruksjoner, kan du oppdatere koden på følgende måte:

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. Lagre kodefilen, og bruk deretter Visual Studio Code til å kjøre koden.

    Når du kjører koden, bør den produsere følgende utdata:

    Found Steve
    

    Koden kjøres, men disse kodelinjene er tette og vanskelige å lese. Du vil kanskje formatere koden på nytt for å inkludere et linjeskift etter if, else ifog else setninger.

  7. Sammenlign koden du nettopp kjørte med følgende kode:

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

    Legg merke til hvor mye enklere det er å lese det andre kodeeksempelet.

Oppsummering

Her er noen viktige ting du kan huske om if kodeblokker og lesbarhet for setninger:

  • Hvis du innser at du bare har én kodelinje oppført i kodeblokkene i en if-elseif-else setning, kan du fjerne klammeparentesene for kodeblokken og mellomrom. Microsoft anbefaler at klammeparenteser brukes konsekvent for alle kodeblokkene i en if-elseif-else setning (enten til stede eller fjernet konsekvent).
  • Fjern bare klammeparentesene for en kodeblokk når den gjør koden mer lesbar. Det er alltid akseptabelt å inkludere klammeparenteser.
  • Fjern bare linjefeeden hvis den gjør koden mer lesbar. Microsoft foreslår at koden blir mer lesbar når hver setning plasseres på sin egen kodelinje.