[so] [Tema1] Coding Style - Conditii lungi
Teodor Popescu
teodor.popescu99 at gmail.com
Fri Feb 28 18:33:08 EET 2020
Mulțumesc frumos pentru răspunsuri.
Seară ușoară
Teodor Popescu
+40 770 498 496
On Fri, 28 Feb 2020 at 11:41, Mihai Barbulescu <b12mihai at gmail.com> wrote:
>
> Salut Teodor,
>
> Iti recomand sa folosesti setarile astyle pentru kernelul de Linux
> (astyle --style=linux). E mai simplu decat sa iti bati tu capul. Mai
> exista si indent da nu mi-am batut capul cu asta. Si o poti face mai
> agresiva sub urmatoarea forma:
>
> astyle --style=linux --indent=force-tab=8 --align-pointer=name -p -H -U
>
> Daca folosesti Visual Studio code poti configura de exemplu ca la
> autosave sa se ruleze astyle, uite mai jos un exemplu de intrare in
> settings.json (invalida pt Linux, o folosesc in alt context)
> {
> ...
> "astyle.cmd_options": [
> "--style=kr",
> "--indent=spaces=4",
> "--indent-col1-comments",
> "--convert-tabs",
> "--pad-oper",
> "--pad-header",
> "--unpad-paren",
> "--lineend=linux",
> "--max-code-length=120",
> "--add-brackets",
> "--align-reference=type",
> "--align-pointer=type"
> ],
>
> ...
> }
>
> Daca folosesti gitlab poti configura hook de post/receive sa ruleze
> checkpatch.pl si astyle pt codul tau cand pushezi.
>
> Punctual la intrebarea ta: din punct de vedere al codului nu mi-as
> bate capul atat timp cat indeplineste 2 conditii:
> 1. checkpatch.pl il valideaza fara erori
> 2. tie personal ti se pare usor de citit
>
> Orice review de genul: mie imi place mai mult asa decat cum propui tu,
> domnu' developer, mi se pare ca genereaza discutii infinite inutile si
> de-aia sunt fanul automatizarii lui prin astyle/indent/checkpatch.
>
> On Fri, 28 Feb 2020 at 09:21, Paul Olaru via so <so at cursuri.cs.pub.ro> wrote:
> >
> > 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
> >
> > _______________________________________________
> > http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>
>
>
> --
> Cu stimă,
> Mihai Bărbulescu
More information about the so
mailing list