<div dir="auto"><div>Eu unul sunt familiarizat cu a doua opțiune fiind cel mai des folosită în porțiunea de kernel Linux în care lucrez eu deci aș recomanda să o folosești pe aceasta. Prima variantă poate fi bună în situații rare în care condiția e într-adevăr complexă și ar avea nevoie de un nume sau comentariu.<div dir="auto"><br></div><div dir="auto">A treia variantă nu văd să aibă un avantaj.</div><div dir="auto"><br></div><div dir="auto">Deci eu unul recomand să mergi pe a doua variantă, cu excepția cazului în care a crea funcția cu un nume relevant poate ajuta înțelegerea codului. Dacă funcția s-ar numi "cond7", don't bother. Dacă funcția s-ar numi "is_valid_open_request", o poți crea.</div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 28, 2020, 9:17 AM Teodor Popescu via so <<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Bună ziua,<br>
<br>
Putem întâlni situații în care avem suficient de multe condiții<br>
într-un if încăt linia să depășească un prag de bun simț (să spunem,<br>
100 de caractere).<br>
Presupunem următoarea secvență de cod:<br>
    if (CONDIȚIE_1 || CONDIȚIE_2 || CONDIȚIE_3 || CONDIȚIE_4 || CONDIȚIE_5) {<br>
        instr;<br>
    }<br>
<br>
Nu am găsit în standardul pentru Linux Kernel o soluție pentru aceste<br>
situații, dar am identificat 3 metode prin care am putea aborda aceste<br>
cazuri:<br>
<br>
1) Refactorizarea codului prin adăugarea unei funcții (care nu va<br>
apărea și în fișierul .h) astfel:<br>
    int my_function()<br>
    {<br>
        return CONDIȚIE_1 ||<br>
            CONDIȚIE_2 ||<br>
            CONDIȚIE_3 ||<br>
            CONDIȚIE_4 ||<br>
            CONDIȚIE_5;<br>
    }<br>
    if (my_function()) {<br>
        instr;<br>
    }<br>
<br>
    Dezavantaj: Nu este imediat evidentă condiția, fiind nevoie să<br>
cauți funcția pentru a înțelege codul.<br>
<br>
2) "Spargerea" condiției pe mai multe linii, astfel:<br>
    if (CONDIȚIE_1 ||<br>
        CONDIȚIE_2 ||<br>
        CONDIȚIE_3 ||<br>
        CONDIȚIE_4 ||<br>
        CONDIȚIE_5) {<br>
        instr;<br>
    }<br>
<br>
    Dezavantaj: Indentarea instrucțiunilor este identică celei a<br>
condițiilor, și nu este imediat clar unde se termină condițiile și<br>
unde încep instrucțiunile.<br>
<br>
3) "Spargerea" condiției pe mai multe linii, astfel:<br>
    if (CONDIȚIE_1 ||<br>
        CONDIȚIE_2 ||<br>
        CONDIȚIE_3 ||<br>
        CONDIȚIE_4 ||<br>
        CONDIȚIE_5)<br>
    {<br>
        instr;<br>
    }<br>
<br>
    Dezavantaj: Nu se respectă recomandarea generală de a avea acolada<br>
deschisă pe aceeași linie cu închiderea condiției unui 'if'.<br>
<br>
Aveți vreo recomandare legată de acest aspect?<br>
<br>
Mulțumesc frumos.<br>
<br>
O seară plăcută<br>
Teodor Popescu<br>
+40 770 498 496   |   teodor.popescu2005   |   335CB<br>
_______________________________________________<br>
<a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii" rel="noreferrer noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so/info/lista-discutii</a></blockquote></div></div></div>