Øvelse – Fjern kodeblokker fra hvis setninger
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
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:
Velg Åpne mappe på Fil-menyen.
Bruk dialogboksen Åpne mappe til å navigere til, og åpne deretter CsharpProjects-mappen .
Velg Program.cs i Visual Studio Code EXPLORER-panelet.
Velg Merk alt på menyen For valg av Visual Studio-kode, og trykk deretter delete-tasten.
Skriv inn følgende kode i Visual Studio Code Editor:
bool flag = true; if (flag) { Console.WriteLine(flag); }Lagre kodefilen, og bruk deretter Visual Studio Code til å kjøre koden.
Skriv inn
dotnet runfra Terminal-ledeteksten for å kjøre koden.Kontroller at du ser følgende utdata:
TrueKoden 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.
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 setningenif.Lagre kodefilen, og bruk deretter Visual Studio Code til å kjøre koden.
Legg merke til at utdataene er de samme som før.
Du skal fortsatt se følgende utdata:
TrueDet 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.
Oppdater koden i Visual Studio Code Editor på følgende måte:
bool flag = true; if (flag) Console.WriteLine(flag);Lagre kodefilen, og bruk deretter Visual Studio Code til å kjøre koden.
Legg merke til at utdataene fortsatt er de samme.
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
ifsetning 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.
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");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 SteveKoden kjøres, men disse kodelinjene er tette og vanskelige å lese. Du vil kanskje formatere koden på nytt for å inkludere et linjeskift etter
if,else ifogelsesetninger.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-elsesetning, kan du fjerne klammeparentesene for kodeblokken og mellomrom. Microsoft anbefaler at klammeparenteser brukes konsekvent for alle kodeblokkene i enif-elseif-elsesetning (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.