Øvelse – fjern kodeblokke fra if-sætninger

Fuldført

Softwareudviklere elsker det, når de kan skrive kode, der sparer tastetryk og visuel plads uden at gå på kompromis med læsbarheden. Anvend kun udtrykket "mindre er mere" i udviklingsprocessen, når det gør din kode mere læsevenlig og forståelig.

Hvis en kodeblok kun har brug for én kodelinje, er det sandsynligt, at du ikke behøver at definere en formel kodeblok ved hjælp af krøllede klammeparenteser. Selvom du teknisk set ikke engang behøver at adskille din kode i flere linjer, kan det gøre det svært at læse din kode ved at kombinere sætninger på en enkelt linje.

Fjernelse af krøllede klammeparenteser som beskrevet ovenfor er en stilistisk ændring, der ikke bør påvirke funktionaliteten af din kode. Du skal dog tage skridt til at sikre, at dine ændringer ikke påvirker koden negativt. Du kan evaluere virkningen af at fjerne krøllede klammeparenteser og blanktegn og derefter vende tilbage til den oprindelige kode, hvis du finder ud af, at ændringerne har gjort din kode mindre læsevenlig.

Opret et eksempel på en if-sætning, der bruger en kodeblok

  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 panelet Visual Studio Code EXPLORER.

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

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

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode.

    Angiv dotnet run fra Terminal-kommandoprompten for at køre din kode.

  4. Kontrollér, at du kan se følgende output:

    True
    

    Din kode repræsenterer et godt udgangspunkt, men du har en kodeblok, der indeholder en enkelt kodelinje. Er det i dette tilfælde nødvendigt at definere en kodeblok?

Fjern krøllede klammeparenteser

Koden ovenfor udfører en kodeblok, når flag er true. Da denne kodeblok indeholder en enkelt kodelinje, har du mulighed for at fjerne krøllede klammeparenteser.

  1. Opdater din kode i Visual Studio Code Editor på følgende måde:

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

    Seddel

    Fjernelse af krøllede klammeparenteser ændrer ikke det faktum, at er Console.WriteLine(flag); kodeblokken for sætningen if .

  2. Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode.

  3. Bemærk, at outputtet er det samme som før.

    Du bør stadig kunne se følgende output:

    True
    

    Der er dog to færre kodelinjer. Det vigtigste er, at kodelinjen under den if indrykkede kode stadig er let at læse.

Undersøg læsbarheden af enkeltlinjeformularer, hvis-sætninger

I dette trin skal du se på en sag, hvor kodelæsbarhed kan blive negativt påvirket.

Da både sætningen if og metodekaldet til Console.WriteLine() er kort, kan du blive fristet til at kombinere dem på en enkelt linje. C#-syntaksen for sætningen if giver dig trods alt mulighed for at kombinere sætninger på denne måde.

  1. Opdater din kode i Visual Studio Code Editor på følgende måde:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode.

  3. Bemærk, at outputtet stadig er det samme.

  4. Brug et øjeblik på at overveje kodelæsbarhed.

    Forestil dig de forrige to kodeeksempler, der er indlejret i et større kodeafsnit. Hvis du kombinerer kodesætninger (som du gjorde i trin 4), kan det gøre det sværere at læse.

    Når du implementerer en if sætning, der indeholder en kodeblok med en enkelt sætning, anbefaler Microsoft, at du overvejer disse konventioner:

    • Brug aldrig en enkeltlinjeformular (f.eks. hvis (flag) Console.WriteLine(flag);
    • Brug af klammeparenteser accepteres altid og kræves, hvis en blok af en if/else if/.../else sammensatte sætning bruger klammeparenteser, eller hvis en enkelt sætning brødtekst spænder over flere linjer.
    • Klammeparenteser kan kun udelades, hvis brødteksten i hver blok, der er knyttet til en if/else if/.../else sammensat sætning er placeret på en enkelt linje.
  5. Hvis du vil undersøge læsbarhedseffekten for større if-elseif-else-konstruktioner, skal du opdatere din kode på følgende måde:

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode.

    Når du kører koden, skal den producere følgende output:

    Found Steve
    

    Koden kører, men disse kodelinjer er tætte og svære at læse. Du kan omformatere koden, så den indeholder et linjeskift efter sætningerne if, else ifog else .

  7. Sammenlign den kode, du lige har kørt, 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");
    

    Bemærk, hvor meget nemmere det er at læse det andet kodeeksempel.

Resumé

Her er et par vigtige ting, du skal huske om if kodeblokke for sætning og læsbarhed:

  • Hvis du er klar over, at du kun har én kodelinje angivet i kodeblokke i en if-elseif-else sætning, kan du fjerne krøllede klammeparenteser for kodeblokken og blanktegn. Microsoft anbefaler, at krøllede klammeparenteser bruges ensartet for alle kodeblokke i en if-elseif-else sætning (enten til stede eller fjernet konsekvent).
  • Fjern kun krøllede klammeparenteser i en kodeblok, når den gør koden mere læsevenlig. Det er altid acceptabelt at inkludere krøllede klammeparenteser.
  • Fjern kun linjefeedet, hvis det gør koden mere læsevenlig. Microsoft foreslår, at din kode bliver mere læselig, når hver sætning placeres på sin egen kodelinje.