[so] [Tema1] Coding Style - Conditii lungi
Paul Olaru
olarupaulstelian97 at gmail.com
Fri Feb 28 09:21:36 EET 2020
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.
A treia variantă nu văd să aibă un avantaj.
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.
On Fri, Feb 28, 2020, 9:17 AM Teodor Popescu via so <so at cursuri.cs.pub.ro>
wrote:
> 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
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20200228/4bcbec1e/attachment.html>
More information about the so
mailing list