Re: Stavový automat, goto

Pavel Hudeček edizon na seznam.cz
Pátek Leden 27 16:07:28 CET 2023


Ještě jsem teda zapomněl na důležitou okolnost, že to samozřejmě na 
začátku vůbec nevypadá na složitý stavový automat, protože zadání končí 
prvním řádnkem "při splnění". Takže jsou tam 3 funkce A, B, C a jedna má 
jeden parametr.

Jenže po dvou dnech zavolá zákazník, ... postupně přibývají podmínky a 
výjimky... a musí to být pokaždé hned. V jisté fázi přišlo nejlepší ty 
funkce zakomentovat, jejich obsah vyhodit do jedné společné, rozdělit 
nějakými komentářovými předěly a naházet tam ty goto.
Čas na předělání na normální stavový automat by samozřejmě nikdy nebyl 
zaplacen.

Ono je vůbec vtipný, jak se programy často ohýbají, až dělají něco úplně 
jiného než na co byly dělané. Nebo něco, co bylo na začátku zadavatelem 
považováno za absolutně nereálné použití, ke kterému nikdy nedojde. ... 
Teda až do okamžiku, než mu přijde zákazník, který bude stejně 
skálopevně trvat na tom, že právě takhle by to chtěl použít:-)

PH

Dne 27.01.2023 v 14:33 Jindroush napsal(a):
> Proc goto? Stavovy automat je jeden dlouhatansky if (nebo bambilion 
> funkci pres tabulku treba) podle stavu a v nem pak zmena stavu a jen 
> continue.
>
> V tom pripade nize mam stavy pojmenovany A1, A2... B1, B2... atd. a 
> kazdy v normalnim prubehu nastavi stav na 'ten dalsi'. Jinak podle 
> podminky, tj. ve vasem A2 by bylo if( neco ) stav = A1 else stav = A3;
>
> S goto musi vzniknout silena spageta neprehledna.
>
> J.
>
> On 27.01.2023 14:23, Pavel Hudeček wrote:
>> Dobrý den všem,
>> sousední diskuze mi připomněla, že existuje jedna situace, kde jsem 
>> použil goto a to dokonce víckrát:
>>
>> Zadání od zákazníka ve stylu:
>> Činnost A, se skládá z kroků 1 ..., 2 ..., 3 ...
>> Činnost B, se skládá z kroků 1 ..., 2 ...
>> Činnost C, se skládá z kroků 1 ..., 2 ..., 3 ..., 4 ...
>> Normální průběh: opakování činností A-B-C stále dokola.
>> Při splnění podmínky v A2, přejít na začátek A.
>> Při splnění podmínky v B1, přejít na začátek C.
>> Při splnění podmínky v B2, přejít na C3, pokud ale potom bylo splněno 
>> C4, vynechat A1.
>>
>> A teď jak to udělat i bez goto, ale aby pak ještě šlo snadno 
>> kontrolovat, že program přesně odpovídá zadání.


Další informace o konferenci Hw-list