[so] [Tema1] Coding Style - Conditii lungi

Teodor Popescu teodor.popescu99 at gmail.com
Thu Feb 27 20:31:28 EET 2020


Bună ziua,

Putem întâlni situații în care avem suficient de multe condiții
într-un if încăt linia să depășească un prag de bun simț (să spunem,
100 de caractere).
Presupunem următoarea secvență de cod:
    if (CONDIȚIE_1 || CONDIȚIE_2 || CONDIȚIE_3 || CONDIȚIE_4 || CONDIȚIE_5) {
        instr;
    }

Nu am găsit în standardul pentru Linux Kernel o soluție pentru aceste
situații, dar am identificat 3 metode prin care am putea aborda aceste
cazuri:

1) Refactorizarea codului prin adăugarea unei funcții (care nu va
apărea și în fișierul .h) astfel:
    int my_function()
    {
        return CONDIȚIE_1 ||
            CONDIȚIE_2 ||
            CONDIȚIE_3 ||
            CONDIȚIE_4 ||
            CONDIȚIE_5;
    }
    if (my_function()) {
        instr;
    }

    Dezavantaj: Nu este imediat evidentă condiția, fiind nevoie să
cauți funcția pentru a înțelege codul.

2) "Spargerea" condiției pe mai multe linii, astfel:
    if (CONDIȚIE_1 ||
        CONDIȚIE_2 ||
        CONDIȚIE_3 ||
        CONDIȚIE_4 ||
        CONDIȚIE_5) {
        instr;
    }

    Dezavantaj: Indentarea instrucțiunilor este identică celei a
condițiilor, și nu este imediat clar unde se termină condițiile și
unde încep instrucțiunile.

3) "Spargerea" condiției pe mai multe linii, astfel:
    if (CONDIȚIE_1 ||
        CONDIȚIE_2 ||
        CONDIȚIE_3 ||
        CONDIȚIE_4 ||
        CONDIȚIE_5)
    {
        instr;
    }

    Dezavantaj: Nu se respectă recomandarea generală de a avea acolada
deschisă pe aceeași linie cu închiderea condiției unui 'if'.

Aveți vreo recomandare legată de acest aspect?

Mulțumesc frumos.

O seară plăcută
Teodor Popescu
+40 770 498 496   |   teodor.popescu2005   |   335CB


More information about the so mailing list