ukazkove zdrojaky
Martin `MJ' Mares
mj na ucw.cz
Pátek Březen 3 23:05:05 CET 2006
Kalispera!
> Nic proti kernelu, ale neutopil
>
> {
> if (!out && !mydev_priv = kmalloc(...))
> out = out1;
> ...
> if (!out && !register_interrupt(...))
> out = out2;
> ...
> if (!out && !register_chrdev(...))
> out = out3;
> ...
> return SUCCESS;
>
> switch(out){
> case out3: unregister_interrupt(...); /* no break! */
> case out2: kfree(...);
> case out1: return -ENODEV;
> }
> }
To by jiste fungovalo, ale zkus se zamyslet, co je Tve vlastni predstave
o tom, jak ma ta funkce pracovat, blizsi. Te me je blizsi urcite "udelej
tohle a pokud se to nepovede, tak vyskoc a uklid" nez "nejdriv zkontroluj,
jestli se zatim vsechno podarilo, pokud ano, tak udelej tohle a poznamenej
si, jestli se to podarilo". A podle toho by take mel kod vypadat -- myslim-li
na goto, necht pisi goto, cokoliv jineho je pokrytectvi :-)
Samozrejme je pravda, ze skoku se da vzdy zbavit, ale stejne tak plati,
ze kazdy program se da upravit tak, aby obsahoval jenom jeden cyklus :-)
(Ponechme radeji stranou, ze psat pred kazdou podminku `!out' je pekna
otrava a nejspis take zpomaleni, zvlast pokud by to byly podminky cyklu,
a ze ty outy by take nekde musely byt deklarovane, coz by programu
na citelnosti nepridalo.)
Kolem programovani se vubec vyrojila spousta nezdravych pover, at uz ta
Dijkstrova o skodlivosti goto, pres cetne poucky o komentovani programu
(velmi spravne zhodnocene Yenyou), az treba po modu XML na vsech sloupich.
Nekdy mam dojem, ze vzdelany programator nakazeny vsemi temito zasadami
dokaze napachat vice skody nez diletant :-)
Dobrou noc vespolek a selskemu rozumu dlouhovekost vinsuji
--
Martin `MJ' Mares <mj na ucw.cz> http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
Mr. Worf, scan that ship." "Aye, Captain... 600 DPI?
Další informace o konferenci Linux