ukazkove zdrojaky

Jan Markus markus.jan na seznam.cz
Pátek Březen 3 23:45:33 CET 2006


Jan Kasprzak wrote:
> [aaa, zacina nam flame war na tema styl programovani; nasadme si azbestove
>  cepice :-]

Ano ano, vitam prvni zucastnene... ;)

Tedy ja vam dekuji za vycerpavajici odpoved a zaroven bych chtel
vsechny ubezpecit, ze nemam v umyslu ta decka kazit ukazkami nevhodne
formatovaneho kodu (to bych si nevzal na svedomi).

Popravde receno jsem o spravnem formatovani ledacos precetl a vy jste
velmi pekne shrnul ta zakladni pravidla a jejich duvody.

Nicmene, aby nam ten plaminek az tak rychle nedoplapolal... kod, ktery
jste oznacil navestim "Bleee" se _me osobne_ cte lepe nez ten s temi
tabelatory. Zvlaste kdyz se to cele "roztrha" nejakymi komentari a
volanim "dlouhych" funkci se zalomenim parametru, tak me oci musi po
opusteni konce jednoho radku urazit dlouhou cestu kamsi doprostred
stranky (malinko prehanim) aby nahmataly zacatek radku dalsiho. A pak
se casto ztracim.

Pri cteni "Bleee" kodu se mi oci "pricucnou" k levemu okraji a pekne
to "sosaji" (vida, rym) a stale jsou schopny rozeznat 4 mezery od dvou.

Pro ilustraci: ;)

> 	Bleee (stejne jako celemu formatovani C-kodu podle projektu GNU).
> Nevim co vidite hezkeho na tomto:
> 
> main ()
> {
>   if (a)
>     {
>       b ();
>     }
>   else
>     {
>       c ();
>     }
> }

> main()
> {
>         if (a) {
>                 b();
>         } else {
>                 c();
>         }
> }
> 

a flame pokracuje... Souhlasim, ze kod by mel sam "rikat co dela" a
upravy rozsahlych komentaru jsou casto zanedbavany... nicmene, pokud
je projekt rozdelen do mnoha souboru (zdrojovych, hlavickovych) a
nazvy funkci & promennych nejsou "vycerpavajici", pak je pro mne
vyhodnejsi komentar nad volanim funce s X parametry, ktery mi prozradi
"co to udela a k cemu to je" nez hledani dalsiho souboru, v nemz je ta
funkce nadefinovana.

Samozrejme predpokladem je, ze programator neni lajdak a nezanedbava
ty upravy komentaru. Ovsem vyjma pana Stallmana je takovy programator
pouhou iluzi ;)

> 	Kod plny goto je zlo, ale goto ma jedno platne a funkcni vyuziti
> - osetreni chybovych stavu: podivejte se, jak probiha treba inicializace
> ruznych driveru v jadre Linuxu - obvykle je to ve stylu

> 	Pokud byste tohle psal bez goto, utopil byste se ve vnorenych
> blocich. A presne proto je v tomto miste goto rozumne a zvysujici citelnost.

Za tuhle informaci dekuji, to mi nedoslo. Souhlasim, ze goto muze byt
dobry sluha, ale zly pan. (stejne jako zenske, ze? ;))

> : Taky se mi ozvali dva BSD nadsenci. Vida, na BSD jsem malem zapomel,
> : uz jsem si ho nainstaloval i se zdrojakama a kocham se po nocich.
> 
> 	Kernel fakt ve vyuce zacatecniku nepouzivejte - neni to "linearni"
> kod, cili je z principu nepoucenemu mene zrejmy nez nejaky "sekvence bezici"
> program.

Kernel jsem vlastne na mysli nemel, ale nektere zakladni unixove
utility (zda se) jsou tam resene kapanek jinak. Ackoliv jsem to zatim
videl pouze "z rychliku".

Ale abych vcas unikl rozvasnenym davum... Pravda je, ze jsem puvodni
dotaz neformuloval nejlepe. Neslo mi ani tak o ukazky spravneho
formatovani, jako o ukazky spravneho reseni ruznych standardnich orisku:
-vyhodnocovani parametru predavanych programu
-jak bezpecne zachazet s retezci znaku
-pokud beru do jedne ruky malloc() mel bych v druhe drzet free()
-jak vytvaret soubory v o+w adresarich (/tmp) a proc se tomu vyhybat
-suid je fuj
-a tak podobne...

> -Y.

s pozdravem,
--honza



Další informace o konferenci Linux