ukazkove zdrojaky

Jan Kasprzak kas na fi.muni.cz
Pondělí Březen 6 13:41:41 CET 2006


Pavel Kankovsky wrote:
: > 	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.

	Ja se nebavim o knihovnich funkcich, ale o internich funkcich
urciteho programu (a nebavim se o cteni zdrojaku versus cteni manualu,
ale o cteni implementace versus cteni komentare nad tou implementaci).

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

	:-) Pro algoritmy/protokoly/... dost mozna, ale pro veci jako
uzivatelske rozhrani GUI aplikace asi tezko. Casto (rekl bych temer vzdy
snad krome jaderne elektrarny) neni cilem napsat 100% korektni kod (a ani
se to v tomto threadu neresi), ale vybalancovat snadnost psani kodu a jeho
naslednou udrzovatelnost. Obvykle taky neni predem zname zadani, nebo i
treba je, ale stejne se v prubehu casu meni. Cili vetsinou neni cilem
byt 100% korektni, ale byt pripraveny na to jednoduse delat zmeny. Proto
tady resime styl programovani a ne strojovou verifikaci algoritmu.

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

	No, ty operace ktere neco delaji a ty ktere neco stornuji
tam musi byt tak jako tak. Podstatne je, ze kazda z techto veci
"temer" nenastava, cili pro cteni/porozumeni kodu neni podstatna.
Hmm, co je na tom salatoveho? Je to pekny linearni kod.
: 
: 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.
: 
	Trvam na tom ze mnou uvedene reseni zvysuje citelnost kodu
(cili nema cenu o tomto dal diskutovat, asi se teda na teto konkretni
veci neshodneme). Mnou popsane reseni je v podstate takova jednoducha
implementace vyjimek - predstavte si (tohle konkretni) goto jako
throw(). Je to totez - cilem je vyhnout se tahani si s sebou nejakych
dalsich stavovych promennych pro vec, ktera stejne temer nikdy nenastava,
ale je treba ji osetrit.

-Yenya

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
> Specs are a basis for _talking_about_ things. But they are _not_ a basis <
> for implementing software.                              --Linus Torvalds <


Další informace o konferenci Linux