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

Pavel Hudeček edizon na seznam.cz
Pátek Září 8 09:46:33 CEST 2023


Konstrukce do-while 0 bývá taky běžnou součástí maker. Tam má ale 
banální význam shodný s () v běžných definech. To je taky WTF věc, když 
to člověk vidí poprvé:-)

PH

Dne 08.09.2023 v 9:08 Jan Waclawek napsal(a):
> 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);


Další informace o konferenci Hw-list