[python] nevznik objektu
David Rohleder
davro na ics.muni.cz
Čtvrtek Březen 18 23:09:13 CET 2010
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.
Další informace o konferenci Python