azurIt píše v Čt 18. 03. 2010 v 23:02 +0100:
> >>  To zalezi na pouziti a kontextu, nebudu ti cpat neco co je pro tve
> >> pouziti zbytecne. Ale v Pythonu se obvykle povazuje za normalni, ze
> >> pokud nejaka funkce dostane chybna vstupni data, tak hodi vyjimku, aby
> >> ten kdo ji volal ze udelal neco spatne. Pokud jsou chybna vstupni data
> >> ocekavana, tak je to zvlastni pripad. Ale podle toho co popisujes, by
> >> se mi tam pocitove rozhodne hodila vyjimka.
> 
> 
> S tymto taktiez nesuhlasim :) Pri normalnom a korektnom behu aplikacie by 
> vynimky takmer vobec nemali nastavat. Mam skor pocit, ze celu problematiku 
> vynimiek chapes trochu nespravne. Priklad s tym tvojim objektom a kontrolou 
> IP:
> 
> Ty ako programator by si mal zabezpecit, aby do objektu vosla spravna IP 
> adresa. Objekt bude pouzivat pravdepodobne nejaka aplikacia nad nim, 
> napriklad nejake GUI. Kontrolu vstupnych udajov a chybove spravy pre 
> pouzivatelov by si mal umiestnit prave tam a do objektu zaslat uz korektne 
> data. Vynimky su urcene pre programatorov aby vedeli, kde nastal problem a co 
> treba osetrit/opravit. Nevravim, ze vyvolavanie vynimiek je zle, niekedy je 
> velmi pohodlne a spravne ich pouzit napriklad pri kontrole vstupu - v tvojom 
> pripade nemusis pridavat kontrolu IPcky do GUI (tzn. nemusis kod zdvojovat), 
> staci pridat kontrolu, ktora odchyti vynimku objektu. Vynimky nie su ziadne 
> 'goto', je to skor taka komunikacia medzi roznymi vrstvami kodu.
> 

Nemyslím si, že bych měl zajišťovat, aby do objektu vstoupil už správný
typ a hodnota. Naopak, všechno by si mohl ošetřit až objekt uvnitř. V
případě, že by vstupní data nevyhovovala, tak by se mohla vrátit místo
objektu hodnota None a bylo by to. Nemusím nikde zdvojovat kontroly
správnosti, atd.

S tím goto jsem to myslel spíš tak, že nepoužití výjimek vede na příliš
hluboké zanořování, protože musíš ošetřovat hromadu chybových stavů, tj.
spousta if.

D.

_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem