[Tutor PyCZ] Had - jeste jednou

Petr Prikryl PrikrylP na skil.cz
Středa Květen 3 09:27:25 CEST 2006


Petr Vaněk napsal...
[...]
> zajimala by mne jedna vec. Nasledujici vynatek kodu je jiste krasne 
> "objektovy" (zapouzdreni atributu a podobne haluze):
>     def getScore(self):
>         return self.score
> [...]Ma nejaky vyznam, ze nepouzivas "property", tedy pouhe 
> self.score bez get/set metod? [...] ten vyse uvedeny priklad je 
> zbytecny, ne?

Tohle je vždycky věcí návrhu a toho, co autor plánuje 
do budoucna. Taky je to cvičný příklad. A taky je to 
v Tutor PyCZ.

Pokud je naprosto jasné, že self.score bude vždycky
implementované takhle, tak je to asi zbytečné. Dokonce
bych se přimlouval za přímé použití self.score, bez
definice funkce. Ale pokud se skóre má v budoucnu
nějak vypočítávat a tohle je jen první, prototypová
implementace, pak je to zcela na místě.


Možná by pak bylo lepší použít property, ale to 
by se v kódu musel používat nový styl tříd (s bázovou
třídou object). Pak by se definovala jen property 
s podporou get. Jenže stejně se musí definovat funkce,
takže je to otázka. Volba názvu funkce getScore()
je podle mě úplně OK a samovysvětlující. Později není
problém přejmenovat self.score například na self._score
a dodefinovat property score s get nastavené na getScore().

Autor v tom má určitý systém a historicky to asi nějak
vzniklo. Nemá smysl všechno předělávat až je to nakonec
perfektní. Lepší je se poučit a příště to udělat líp.

Někdy má člověk strach sám před sebou, že když to
neudělá přesně tak, jak se někde říká, že by se to
mělo dělat, dostane se do slepé uličky, přestane
to zvládat a podobně.

Všechno to jsou kompromisy. Čím kratší kód, tím lépe --
pokud to zůstává přehledné. Někdy přílišné zjednodušení
věci spíš znepřehlední. Musí se to hlídat a občas 
"refaktorizovat" (což je jenom magické slovíčko
k českému "předělat k lepšímu").

pepr


Další informace o konferenci Tutor