Citat:
mr.marvin:Moje pitanje glasi, da li je bolje sve funkcije staviti kao atribute klase ili ih ostaviti kao nezavisne funkcije? Da li postoji neka programerska praksa u vezi sa ovim, ili sve zavisi od primjera do primjera?
Programerska praksa naravno da postoji, i zove se
objektno programiranje. Licno mi se dopada ovakav opis:
Object-oriented programming may be seen as a collection of cooperating objects, as opposed to a traditional view in which a program may be seen as a list of instructions to the computer. In OOP, each object is capable of receiving messages, processing data, and sending messages to other objects. Each object can be viewed as an independent little machine with a distinct role or responsibility. - Po mom misljenju, akcenat u dizajnu softvera bi uvek trebalo staviti upravo na poslednju recenicu -
sustina objekata je da su sami po sebi nezavisni i da je njihova uloga specificna i jasno definisana. Znaci, u tvom primeru, sve funkcije koje se po ulozi mogu definisati kao deo jednog objekta bi trebalo da budu metodi tog objekta.
Python jezik, iako dozvoljava pisanje striktno proceduralnog kôda, na svakom koraku ohrabruje i olaksava pisanje objektno-orjentisanog kôda.
Citat:
I jos nesto... Ako pogledate kod, vidjecete da su sve funkcije koje prave vremena (pocinju sa conj_) veoma slicne. Sad, da li je bolje napraviti jednu veliku funkciju/klasu sa if dijelovima i zaobici napotrebno ponavljanje koda ali na racun preglednosti?
Kôd bi trebalo da bude, pored funkcionalnosti, i citljiv i razumljiv a takodje i ne previse komplikovan - svaku komplikovanu konstrukciju u svom kôdu u velikom broju slucajeva mozes da resis kako samim framework-om (odnosno mogucnostima jezika u kome pises kôd) tako i
refactoring-om, odnosno redizajnom svog kôd - konkretnije, pokusajem da nadjes i izvuces sto vise moguce zajednickog kôda tih funkcija i pretocis to u tzv.
base funkciju (ili pak objekat-klasu) i dodatne razlike implementiras putem nasledjivanja te base klase.
Pogledacu tvoj kôd sad pa ako uspem cu ti prikazati sve to i u konkretnom primeru.
Alex: My favorite site is
http://localhost/
R.J. Oppenheimer: "I am become death, destroyer of worlds" (1945 AD)
tweet.13x ||
linkedin.13x