ukazkove zdrojaky

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Březen 4 20:57:41 CET 2006


On Fri, 3 Mar 2006, Jan Kasprzak wrote:

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

Proc jen cepice? Radeji rovnou cely skafandr.

> 	Bleee (stejne jako celemu formatovani C-kodu podle projektu GNU).
> Nevim co vidite hezkeho na tomto: [...]
> Pritom indent -kr -i8 Vam da kod ktery je na mene radku a presto (nebo
> vlaste i proto) je ten kod daleko citelnejsi [...]

Uprimne receno jsem po dlouhe dobe dospel k tomu, ze kazdy z tech
jmenovanych stylu se hodi na neco jineho. Pro struktury vyssich urovni
je vhodnejsi rozvlacnejsi styl, pro struktury hlubsich urovni zase
kompaktnejsi. Efekt to ma takovy, ze zakladni struktury jsou vyraznejsi
nez ty detailni, takze jsou videt na prvni globalni pohled, zatimco ty
jemnejsi struktury se stavaji zretelnymi, kdyz clovek zaostri svuj pohled
na prislusne misto.

> Odsazovani o mene nez cely tabelator je jednak mene prehledne, zvlast po
> dlouhych hodinach u monitoru :-) a jednak dovoluje programatorovi prilis
> velkou uroven vnoreni bloku (coz je znamkou spatne navrzeneho kodu).

Argument, ze nejaka stylisticka konvence dovoluje programovat blbe, je
u jazyka, na jehoz pouziti by se mel vydavat zbrojni pas (ano, mluvim
o C), imho ponekud nemistny. :)

> 	Primarnim zdrojem informaci o kodu ma byt kod samotny (jeho
> cistota a citelnost).

To sice zni hezky, ale predstava, ze k pouzivani knihovnich funkci budu
cist zdrojaky knihovny misto jeji dokumentace, mi pripada ponekud...
ehm...zvlastni.

Ve skutecnosti ma byt primarnim zdrojem specifikace. Ono to samozrejme zni 
strasne akademicky, ale bez poradne specifikace vlastne nelze rict, jestli 
ten kod dela to, co delat ma. Selsky rozum to nekdy vyresi, ale casto take 
selhava.

Nejlepsi je samozrejme formalni specifikace a kod doplneny strojove
verifikovatelnym dukazem, ze teto specifikaci vyhovuje. :)

> 	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 misto toho jsme se malem utopili v salatu (jinak to nelze nazvat) 
operaci, ktere neco delaji, a antioperaci, ktere je zase stornuji. :)

Tohle neni priklad toho, kde je pouziti goto vhodne, ale priklad toho, kde 
je pouziti goto to mene spatne, kdyz podminky (pouzity programovaci jazyk 
atd.) umoznuji jen sama spatna reseni.


On Fri, 3 Mar 2006, Jan Markus wrote:

> 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:

V tom pripade bych asi obecne doporucil vzit ruzne GNU utility (tedy
myslim ty "ortodoxni") na strane jedne a OpenBSD na strane druhe. Kazdy
z nich se vyznacuje jistym druhem purismu, nad kterym neni na skodu trochu
pomeditovat.

> -pokud beru do jedne ruky malloc() mel bych v druhe drzet free()

Nejlepsi je v jedne ruce drzet hrst mallocu() a v druhe exit(). :)

> -jak vytvaret soubory v o+w adresarich (/tmp) a proc se tomu vyhybat
> -suid je fuj

V tomto pripade jsou mozna lepsi priklady ne toho, jak to delat dobre, ale 
priklady, jak snadno to lze pokazit. :)


On Fri, 3 Mar 2006, Petr Vileta wrote:

> A duvod teto upravy? No velmi prosty. Kdyz mam mezi uvodni a koncovou 
> zavorkou napriklad 150 radek, tak se to proste nevejde na obrazovku. Kdyz 
> kontroluji spravne uzavreni zavorek, nebo proste jen koukam, co do bloku 
> patri a co ne, tak se postavim kursorem na uvodni zavorku a jedu dolu. 

Ja to tedy obvykle delam tak, ze se postavim na jednu ze zavorek a
zmacknu %. :)


--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."




Další informace o konferenci Linux