Diferite moduri de a scrie „dacă“ declarație

voturi
19

Am văzut diferite moduri de a scrie o ifdeclarație.

Pe care o preferi și de ce?

Exemplul 1:

if (val % 2 == 1){output = “Number is odd”;}else{output = “Number is even”;} 

Exemplul 2:

if (val % 2 == 1)
{
    output = “Number is odd”;
}
else
{
   output = “Number is even”;
}

Exemplul 3:

if (val % 2 == 1)
output = “Number is odd”;
else
output = “Number is even”;

Exemplul 4:

if (val % 2 == 1){
output = “Number is odd”;
} else {
output = “Number is even”;
}

întrebare similară:

De ce este considerată o practică proastă a omite acolade?

Întrebat 12/03/2009 la 14:27
sursa de către utilizator
În alte limbi...                            


20 răspunsuri

voturi
2

Eu folosesc versiunea 2.

Publicat 12/03/2009 la 14:30
sursa de către utilizator

voturi
5

Prefer # 2. Ușor de lizibilitate.

Publicat 12/03/2009 la 14:30
sursa de către utilizator

voturi
44

Pentru astfel de cazuri, există, de asemenea, operatorul condiționată:

output = (val % 2 == 1) ? "Number is odd" : "Number is even";

Dacă sunteți cu siguranță de gând să utilizeze un „dacă“ aș folosi versiunea 2 sau versiunea 4, în funcție de restul stilului dvs. de contravântuiri. (La locul de muncă Eu folosesc 4, pentru proiecte personale Eu folosesc 2) Lucrul cel mai important este faptul că există aparat dentar, chiar în jurul valorii de declarații unice.

BTW, pentru paritate de testare este ușor mai rapid de utilizat:

if ((val & 1) == 1)
Publicat 12/03/2009 la 14:32
sursa de către utilizator

voturi
16

Versiunea 2. Am include întotdeauna paranteze pentru că dacă ai nevoie pentru a pune mai mult de o linie sub condițională nu va trebui să vă faceți griji cu privire la punerea în paranteze la o dată ulterioară. Asta, și se asigură că toate declarațiile dumneavoastră dacă au aceeași structură care ajută atunci când codul de scanare pentru o anumită declarație, dacă.

Publicat 12/03/2009 la 14:33
sursa de către utilizator

voturi
10

Eu folosesc versiunea 2.

Un motiv de a folosi acolade devine mai clar dacă nu aveți o altcineva.

if(SomeCondition)
{
  DoSomething();
}

Dacă atunci trebuie să adăugați o altă linie de cod, sunt mai puțin susceptibile de a avea o problemă:

if(SomeCondition)
{ 
  DoSomething();
  DoSomethingElse();
}

Fara bretele pe care s - ar putea fi făcut acest lucru:

if(SomeCondition)
   DoSomething();
   DoSomethingElse();
Publicat 12/03/2009 la 15:47
sursa de către utilizator

voturi
3

Sunt de acord cu operatorul ternar. Foarte utilizat în conformitate cu codul pe care am venit peste, și cred că este mult mai ușor și mai plăcut decât să citească toate parantezele suplimentare și liniuțe este nevoie pentru a scrie o dacă / declarație altceva.

Publicat 12/03/2009 la 16:20
sursa de către utilizator

voturi
9

Eu personal prefer 3. suplimentare acolade trebuie doar să adăugați prea mult zgomot vizual inutile și spațiile albe.

Pot să văd oarecum raționamentul pentru 2/4 de a reduce bug-uri, dar eu personal nu am avut un bug, deoarece gândire linii suplimentare erau în interiorul unui if. Eu folosesc C # și Visual Studio astfel încât codul meu rămâne întotdeauna destul de bine formatat. Acest lucru ar putea fi, totuși, o problemă dacă am fost un programator mai mult stil Notepad.

Publicat 12/03/2009 la 16:40
sursa de către utilizator

voturi
0

Eu prefer 4 mine, dar cred că 2 este cu siguranta prea bun.

Publicat 12/03/2009 la 16:43
sursa de către utilizator

voturi
0

Exemplul 2 este , fără îndoială , cea mai mică eroare de abordare predispuse. Vă rugăm să consultați acest răspuns am dat la o întrebare similară pentru motivul:

Care este stilul preferat pentru declarațiile de decizie și o singură acțiune?

Deși implicit Visual Studio pentru utilizarea bretele este de a pune bretele pe o linie nouă (metoda mea preferată), al liniile directoare - cadru de proiectare carte (prima ediție) de Krzysztof Cwalina si Brad Abrams propune o convenție diferită, exemplul 4, plasarea bretele de deschidere de la sfârșitul unei precedente ifdeclarații (pagina 274). De asemenea , ei de stat „ Evitați omiterea acolade, chiar dacă limba permite acest lucru“.

Neavând a doua ediție la îndemână, nu am putut spune dacă aceste convenții au schimbat sau nu.

Publicat 12/03/2009 la 16:46
sursa de către utilizator

voturi
0

Eu le-ar folosi în următoarea ordine: 1) operatorul ternară 2) Exemplul 3, dar în mod corespunzător indentate 3), fie 2 sau 4, acestea sunt în esență aceleași. Aș merge cu orice Styl generală a fost în cazul în care am lucrat.

Sunt de acord cu ceea ce a spus despre omiterea jake acolade inutile. N-au cauzat sau au văzut o eroare cauzată de cod nou adăugate și cineva gândesc că făceau parte dintr-o declarație, dar în cazul în care acestea nu au fost din cauza lipsei de acolade. Dacă cineva a făcut vreodată asta, le-aș ridiculizeze fără milă.

Ar trebui să mă tortureze să mă facă să utilizeze numărul 1.

Publicat 12/03/2009 la 16:53
sursa de către utilizator

voturi
0

Mi-ar folosi întotdeauna # 2. # 4 este un aspect cu adevărat îngrozitor și ar fi făcut numai de către cineva care crede că o metodă trebuie să fie o dimensiune a ecranului în lungime și va face orice să-l înghesui în, mai degrabă decât refactor codul !!!

Publicat 12/03/2009 la 18:09
sursa de către utilizator

voturi
0

Personal prefer versiunea 2. Dar, din moment ce doar formating nu contează. Utilizare care este cel mai ușor de citit pentru tine si membrii echipei!

Publicat 12/03/2009 la 18:10
sursa de către utilizator

voturi
0

Eu folosesc un # 2, cu o modificare minoră

if (condition1) 
{
      doStuff();
} else 
{
      doSomethingElse();
}
Publicat 12/03/2009 la 18:11
sursa de către utilizator

voturi
5

Nici una dintre cele de mai sus.

În cazul în care blocul meu de execuție are doar o singură linie (chiar dacă este un mare pentru declarație) , atunci eu nu folosesc acolade, dar eu fac indentare aceasta, similar cu # 3

if (num > 3)
     print "num is greater than 3";
else
     print "num is not greater than 3";

Un exemplu cu mai multe declarații care nu au nevoie de acolade:

if (num > 3)
    for (int i = 0; i < 100)
        print i + "\n";
else
    print "booya!";

Acestea fiind spuse, răspunsul Jon Skeet în această întrebare este cel mai bun

Publicat 12/03/2009 la 18:15
sursa de către utilizator

voturi
0

Personal, există două metode pe care le găsesc a fi bună practică:

Căci dacă-blocuri, există numai în acest fel:

if(...)
{
    // ...
}
else if (...)
{
    // ...
}
else
{
    // ...
}

Aceasta este cea mai sigură și mai ușor de înțeles mod de a scrie if-else-blocuri.

Pentru ca unul garnituri (true garnituri unul care sunt ușor de înțeles pe o singură linie), puteți utiliza operatorul ternar.

var objectInstance = condition ? foo : bar;

// Or the binary operator when dealing with null values
var objectInstance = condition ?? foo;

Nu trebuie să suni metode care fac ceva ce nu ajuta la asignarea curent.

Nu aș folosi nici un alt mod decât cele menționate mai sus.

Publicat 12/03/2009 la 18:19
sursa de către utilizator

voturi
2

Este ciudat că nimeni nu a menționat acest lucru:

if ( x == 1) {
   ...
}
else {
   ...
}

Pentru mine, aceasta este singura cale corectă, desigur :-)

Publicat 12/03/2009 la 19:12
sursa de către utilizator

voturi
0

Versiunea # 2 pentru mine - cel mai ușor pentru a vedea, cel mai ușor de citit, ușor pentru a vedea în cazul în care în cazul în care începe și se termină, aceleași pentru altceva, tu dont trebuie să vă faceți griji cu privire la punerea între paranteze, dacă doriți să adăugați mai mult de o declarație.

Publicat 12/03/2009 la 19:31
sursa de către utilizator

voturi
3

Este mai important să fie consistentă decât pentru a selecta cele mai bune.

Aceste stiluri au diferite avantaje și dezavantaje, dar nici unul nu este la fel de rău ca și amestecarea lor în cadrul unui proiect sau chiar o unitate de compilare sau într-o funcție.


Operatorul ternar este alegerea evidentă pentru acest cod specific. Pentru simplu singură declarație if/elses“ , care nu poate fi exprimat altfel, aș prefera un caz corespunzător alin 3:

if (val % 2 == 1)
    output = “Number is odd”;
else
    output = “Number is even”;

Am înțeles motivația din spatele „folosiți întotdeauna acolade“, dar niciodată nu am fost personal mușcat de omitere (OK, o dată. Cu un macro.)

Din stilurile de mai sus, aș alege (2). (4) ar fi ok dacă „corect“ indentate.
(1) mi - ar atribui un dezvoltator tânăr , care sperăm că va crește din „cod compact“, sau cineva care nu își pot permite un monitor decent. Cu toate acestea, aș merge cu el , dacă acesta a fost stilul local.

Publicat 12/03/2009 la 20:36
sursa de către utilizator

voturi
0

scurte declarații unice:

if (condition) output = firstChoice;
else doSomethingElse();

Mai multe declarații sau lungi

if (condition) {
   output = firstChoice;
   ...
} else {
   ...
}
Publicat 12/03/2009 la 20:46
sursa de către utilizator

voturi
0

folosind cu acolade este sugerat, am văzut unele probleme cu instrucțiunii if altceva fără bretele, (nu-mi amintesc exact) și anume declaratie sub daca nu a fost executat, atunci când am adăugat același lucru cu bretele, apoi a lucrat numai. (Utilizarea Visual studio & C # 4.0).

Publicat 27/10/2013 la 21:33
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more