Exercise - Eliminați blocurile de cod din instrucțiuni if

Finalizat

Dezvoltatorii de software o plac atunci când pot scrie cod care salvează apăsări de taste și spațiu vizual fără a sacrifica lizibilitatea. Aplicați expresia "mai puțin este mai mult" în procesul de dezvoltare atunci când face codul mai ușor de citit și mai ușor de înțeles.

Dacă un bloc de cod are nevoie de o singură linie de cod, există șanse să nu fie necesar să definiți un bloc de cod formal utilizând acolade. Deși din punct de vedere tehnic nici nu trebuie să separați codul în mai multe linii, combinarea instrucțiunilor pe o singură linie vă poate face codul greu de citit.

Eliminarea acoladelor așa cum este descris mai sus este o modificare stilistică care nu ar trebui să afecteze funcționalitatea codului. Totuși, ar trebui să urmați pașii pentru a vă asigura că modificările dvs. nu afectează negativ modul în care este lizibil codul. Puteți evalua impactul eliminării acoladelor și a spațiului alb, apoi reveniți la codul original dacă descoperiți că modificările aduse codului sunt mai puțin ușor de citit.

Crearea unui exemplu de instrucțiune If care utilizează un bloc de cod

  1. Asigurați-vă că aveți un fișier Program.cs gol deschis în Visual Studio Code.

    Dacă este necesar, deschideți Visual Studio Code, apoi parcurgeți pașii următori pentru a pregăti un fișier Program.cs în Editor:

    1. În meniul Fișier , selectați Deschidere folder.

    2. Utilizați caseta de dialog Deschidere folder pentru a naviga la, apoi deschideți folderul CsharpProjects .

    3. În panoul Visual Studio Code EXPLORER, selectați Program.cs.

    4. În meniul Selectare cod Visual Studio, selectați Selectare totală, apoi apăsați tasta Delete.

  2. Tastați următorul cod în Visual Studio Code Editor:

    bool flag = true;
    if (flag)
    {
        Console.WriteLine(flag);
    }
    
  3. Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.

    Introduceți dotnet run din linia de comandă Terminal pentru a rula codul.

  4. Verificați dacă vedeți următoarea ieșire:

    True
    

    Codul dvs. reprezintă un punct de plecare bun, dar aveți un bloc de cod care include o singură linie de cod. În acest caz, este necesar să definiți un bloc de cod?

Eliminați acoladele curbate

Codul de mai sus execută un bloc de cod atunci când flag este true. Deoarece acest bloc de cod conține o singură linie de cod, aveți opțiunea de a elimina acoladele curbate.

  1. Actualizați codul în Visual Studio Code Editor după cum urmează:

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

    Notă

    Eliminarea acoladelor nu modifică faptul că Console.WriteLine(flag); este blocul de cod pentru instrucțiune if .

  2. Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.

  3. Observați că rezultatul este la fel ca înainte.

    Ar trebui să vedeți în continuare următoarea ieșire:

    True
    

    Cu toate acestea, există două linii de cod mai puține. Cel mai important, cu linia de cod de sub if indentarea codului, codul este încă ușor de citit.

Examinați lizibilitatea formularului cu o singură linie dacă instrucțiunile

În acest pas, veți analiza un caz în care lizibilitatea codului poate fi afectată negativ.

Deoarece atât if instrucțiunea, cât și apelul de metodă la Console.WriteLine() sunt scurte, este posibil să fiți tentat să le combinați pe o singură linie. Până la urmă, sintaxa C# pentru if instrucțiune vă permite să combinați instrucțiuni în acest fel.

  1. Actualizați codul în Visual Studio Code Editor după cum urmează:

    bool flag = true;
    if (flag) Console.WriteLine(flag);
    
  2. Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.

  3. Observați că ieșirea este încă aceeași.

  4. Luați un minut pentru a lua în considerare lizibilitatea codului.

    Imaginați-vă cele două eșantioane de cod anterioare imbricate într-o secțiune mai mare de cod. Combinarea instrucțiunilor de cod (la fel cum ați făcut la pasul 4) ar putea face mai dificilă citirea.

    Atunci când implementați o if instrucțiune care include un bloc de cod cu o singură instrucțiune, Microsoft recomandă să luați în considerare aceste convenții:

    • Nu utilizați niciodată formularul cu o singură linie (de exemplu: dacă (semnalizare) Consolă.WriteLine(semnalizare);
    • Utilizarea acoladelor este întotdeauna acceptată și necesară dacă orice bloc al unei instrucțiuni compuse if/.../else utilizează acolade sau dacă un singur corp de instrucțiune se întinde pe mai multe linii.
    • Acoladele pot fi omise numai dacă corpul fiecărui bloc asociat cu o instrucțiune compusă if/.../else este plasată pe o singură linie.
  5. Pentru a examina impactul de lizibilitate pentru construcții mai mari dacă-else-else, actualizați codul după cum urmează:

    string name = "steve";
    if (name == "bob") Console.WriteLine("Found Bob");
    else if (name == "steve") Console.WriteLine("Found Steve");
    else Console.WriteLine("Found Chuck");
    
  6. Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.

    Atunci când rulați codul, acesta ar trebui să producă următoarea ieșire:

    Found Steve
    

    Codul rulează, dar aceste linii de cod sunt dense și greu de citit. Se recomandă să reformatați codul pentru a include un sfârșit de linie după ifelse if, și else instrucțiunile.

  7. Comparați codul pe care tocmai l-ați rulat cu următorul cod:

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

    Observați cât de ușor este să citiți al doilea exemplu de cod.

Recapitula

Iată câteva lucruri importante de reținut despre if blocurile de cod de instrucțiune și lizibilitate:

  • Dacă vă dați seama că aveți o singură linie de cod listată în blocurile de cod ale unei if-elseif-else instrucțiuni, puteți elimina acoladele blocului de cod și spațiul alb. Microsoft recomandă ca acoladele să fie utilizate constant pentru toate blocurile de cod ale unei if-elseif-else instrucțiuni (prezente sau eliminate constant).
  • Eliminați acoladele unui bloc de cod doar atunci când face codul mai ușor de citit. Întotdeauna este acceptabil să includeți acolade curbate.
  • Eliminați fluxul de linii doar dacă face codul mai ușor de citit. Microsoft sugerează că codul dvs. va fi mai ușor de citit atunci când fiecare instrucțiune este plasată pe propria linie de cod.