[so] [Tema 2][Windows] Checkstyle error doar pe Windows

Razvan Crainea razvan.crainea at gmail.com
Mon Mar 16 11:13:05 EET 2020


Salutare!

Într-adevăr, nu este recomandată utilizarea instrucțiunilor de
modificare a flow-ului programului (return sau goto) în macro-uri din
două motive:
1. limitează modul în care poți folosi macro-ul: spre exemplu, dacă în
cadrul macro-ului folosești un `return -1`, atunci vei putea folosi
macro-ul respectiv doar în funcții care întorc valori întregi, nu și
funcții care nu întorc nimic, sau întorc pointeri
2. uitându-te la locurile în care se folosești macro-ul, este greu de
dedus ce face; la DIE() este simplu, că știi exact că execuția
programului moare (de acolo și numele DIE), dar dacă folosești return
sau goto, e mai greu de intuit - trebuie verificată definiția
macro-ului, lucru care face codul mai greu de citit.

Pentru a folosi în continuare macro-ul și a păstra calitatea codului,
poți modifica DIE să primească o *instrucțiune* pe care să o apeleze
în cazul în care condiția este adevărată. Spre exemplu, poți face ceva
de genul ăsta[2], unde este specificat explicit flow-ul programului.

[2] https://gitlab.cs.pub.ro/snippets/37

Numai bine,

On Mon, Mar 16, 2020 at 4:52 AM Antonio-Dan MACOVEI (94298) via so
<so at cursuri.cs.pub.ro> wrote:
>
> Chiar ma uitasem si eu pe linkul acela, insa am zis ca nu merita ceva de genul la mine.
> Nu fac exit pentru ca trebuie sa propag codul de retur mai departe fara sa opresc executia intregului program. Folosesc acel macro pentru a evita if-urile care verifica o valoare de retur si intorc un cod, exact ca si DIE.
> Pe linux cred ca s-a oprit din tipat cand am pus acel do while ca la DIE.
>
> Get Outlook for Android
>
> ________________________________
> From: Dorin Geman <dorin.geman at rosedu.org>
> Sent: Sunday, March 15, 2020 10:54:22 PM
> To: Antonio-Dan MACOVEI (94298) <antonio_dan.macovei at stud.acs.upb.ro>; Sisteme de Operare <so at cursuri.cs.pub.ro>
> Subject: Re: [so] [Tema 2][Windows] Checkstyle error doar pe Windows
>
>
>
> On Sun, Mar 15, 2020 at 9:40 PM Antonio-Dan MACOVEI (94298) via so <so at cursuri.cs.pub.ro> wrote:
>
> Salut,
>
> Am folosit un MACRO atat pe Linux, cat si pe Windows (asemanator cu cel de DIE), insa doar pe Windows primesc urmatoarea eroare de coding style pe vmchecker:
>
> WARNING:MACRO_WITH_FLOW_CONTROL: Macros with flow control statements should be avoided
>
> Diferenta dintre DIE si functia mea este ca in loc de exit eu fac return.
> Ar trebui sa modific, sau se poate adauga o exceptie in checkstyle?
>
> Salut,
>
> De ce nu faci exit() în loc de return?
> Din ce am citit, return și goto __NU__ sunt recomandate în macro-uri. Am găsit un mesaj[0] care prezintă un truc, în cazul în care chiar ții la acel return.
> Totuși, este ciudat ca nu-ți dă aceeași eroare și pe Linux, tocmai am testat cu un macro ce folosește return și sare imediat checkstyle-ul.
>
> Spor,
> Dorin Geman, 331CA
>
> [0]: https://lore.kernel.org/patchwork/patch/498381/
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii



-- 
Răzvan Crainea


More information about the so mailing list