goto considered harmful; was: ceckovy kviz 2 (hardcore)

Jan Waclawek konfera na efton.sk
Pátek Září 8 09:08:08 CEST 2023


A ten komentar si si tam vsimol? Ten je u mna povinnou a neoodelitelnou
sucastou tej konstrukcie... :-)

Inak, dospel som k tomu cez presne tu istu metodu ako spomenul pan kolega
Buchta, t.j. pouzit funkciu a return. A uplne presne ako to pise, aj mne
na tom vadila ta nemoznost upratat, preto som si vymyslel ten
do-break-while(0).

Ja nie som dogmatik a v mojich programoch goto najdes, je to na dlhu
diskusiu a kazdy jednotlivy pripad si dlho sam sebe odovodnujem (kym
neodisiel jeden moj kolega, viedli sme na tuto temu velmi rozsiahle
diskusie, so snahou najst vsetky tie spravne argumenty pre a proti). Pre
tento konkretny pripad som si riesenie nasiel a pokladam ho za lepsie nez
goto.

wek


PS. A samozrejme existuje jediny spravny sposob odsadzovania, ma to v mene,
One True Style
https://en.wikipedia.org/wiki/Indentation_style#Variant:_1TBS_(OTBS) ; a
na rozdiel od pseudoargumentov "vsetci to tak robia", "je to z K&R", a
"mne sa to tak paci", ja mam pre neho skutocne argumenty:
- blok je vizualne vertikalne priradeny jemu prisluchajucemu riadiacemu
vyrazu
- blok je vizualne vertikalne odsadeny od nasledujuceho prikazu 
- vodorovne odsadenie zatvaracej zatvorky na uroven riadiaceho prikazu je
hierarchicky konzistentne aj vizualne zvyraznene, co je dolezite najma
pripade '} while()' v do-while a aj v pripade '} else {' (ak by tieto
pripady neexistovali, zatvaracia zatvorka vodorovne zarovnana s blokom by
bola akceptovatelna, tento argument to zamieta a konzistentnost je
dolezita)
- oproti K&R sa vertikalne usetri jeden riadok, a je dolezite mat co
najviac programu v pozorovacom okne cloveka



----- Original Message ---------------

Subject: Re: goto considered harmful; was: ceckovy kviz 2 (hardcore)
   From: Miroslav Šinko <sinkomiro na gmail.com>
   Date: Fri, 8 Sep 2023 08:19:18 +0200
     To: hw-list na list.hw.cz

Precitam.

Presne taketo do{}while(0); pouziva jeden kolega aj na miestach niekde v 
strede funkcie na osetrenie 2-3 ifov. Ked po nom citam kod, vzdy ma 
stoji cas prist na to, naco do<> tam potrebuje cyklus?! Kym pochopim, ze 
na konci je while(0). Mne sa to skratka nepaci - pouzivat konstrukciu 
cyklu tam, kde nepatri.

miro

On 07.09.2023 21:56, Jan Waclawek wrote:
>>> Na druhej strane to goto je skutocne svinstvo
>> S tymto zas uplne nesuhlasim.
> 
> Precitaj si toho Dijkstru. Bohuzial, nie je to klasicke rucne pisane EWD
> ale je pisane na stroji (asi lebo EWD ho posielal do casopisu); ale pointa
> je, ze kym EWD goto zavrhol ako hruby a problematicky nastroj, vobec
> neodmieta myslienku hladania lepsich foriem riadenia toku programu.
> 
> Ja pouzivam
> 
> do { // only to be breakable
>    blahblah1;
>    if (don't want to continue) break;
>    blahblah2;
>    if (don't want to continue) break;
>    blahblah3;
> } while(0);
> 
> wek
> 
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list