RE: [Tutor PyCZ] Milované Livewires - A najednou tam lezou třídy

Petr Prikryl PrikrylP na skil.cz
Pátek Březen 3 07:57:57 CET 2006


Tomáš Bělonožník
> [...] # Změňte příkazy global tak, že nyní stačí globalisovat
> pouze objekt player (namísto hrac_x apod.) nebo robot 
> (namísto robot_x apod.).
> # Změňte všechny reference na hrac_x, hrac_y a hrac_telo
> na hrac.x, hrac.y a hrac.telo.
>
> Problém je v tom, že já v celém programu nemám 
> jedinkrát global a je to všechno dělané přes return 
> a funkce, kterým předávám určité hodnoty. Ty teď po 
> zaměnění těch referencí nefungují [...]
> Má otázka je tedy - Chápu to dobře, že budu muset
> předělat velmi podstatnou část programu? Přepsat 
> definice funkcí do definic tříd?

Tomu se umělecky říká "refaktorizace" (česky "předělávání").
Vždycky je to trochu problematické. Většina programátorského
času není věnována psaní nového kódu, ale údržbě a předělávání
již existujícího kódu. Proto do toho musíš vniknout co 
nejdříve, už od začátku. Podívej se na to takhle.
Teď víš, jak vypadal zdrojový kód zapsaný jen funkcemi.
Při problémech s globálními proměnnými jsi zjistil, 
že upravovat kód může být pracné.

> Přečetl jsem si o třídách nějakou teorii, něco jsem si z
> toho vzal, ale chvílemi jsem měl pocit, že mi povídají 
> o koze a já chci slyšet o voze.

Až se to předělá na objekty a trochu si to ošaháš
(nastudovat teorii je dobré, ale nestačí to), oceníš,
že to je přínosné.

Neděláš nic špatně. Tvůj pocit je normální. Vydrž.

Je to jak na základní škole. Když jsi byl prvák,
úloha, která spočívala napsání dvou řádků, byla 
hrozně dlouhá. Osmáci se tomu smějí. Ale takhle
to je v životě i dál. Maturitní zkouška je tak
složitá, že do té doby nic takového nezažiješ.
Každá zkouška na vysoké škole je složitostí 
srovnatelná s maturitou. A během studia jich uděláš 50. 
Náročnost je potřeba stupňovat. Jinak zakrníš
a nezvládneš nikdy napsat program, který má třeba
100 tisíc řádků zdrojového textu.

Podívej se na moderní počítačové hry. Taky 
je někdo musel naprogramovat. Vem si takovou
"Far Cry", kde se všechno hýbe, řídí se svou
strategií. Ani nevíš, jak se to vlastně 
programuje, aby se to chovalo realisticky
na hardwaru, který nemá nekonečný výkon, že? 
(Já taky ne -- zabývám se jinými věcmi ;) 
Dá se to zvládnout, ale určitě to není 
žádná legrácka.

Co se týká objektů a tříd, mrkni na 
http://www.skil.cz/python/cztutclass.html
a na
http://www.skil.cz/python/cztuttrn.html#Pclass_class

pepr


Další informace o konferenci Tutor