Citat:
Reljam:
I na kraju se vracamo na ono sto pricam od pocetka, a to je da je dizajn programa in the real world jedna neegzaktna i subjektivna stvar. Neke opste principe je naravno moguce formalizovati, ali na kraju sve je to stvar ukusa, koji se izmedju ostalog formira i iskustvom.
I na kraju se vracamo na ono sto pricam od pocetka, a to je da je dizajn programa in the real world jedna neegzaktna i subjektivna stvar. Neke opste principe je naravno moguce formalizovati, ali na kraju sve je to stvar ukusa, koji se izmedju ostalog formira i iskustvom.
Ne baš toliko neegzaktna i subjektivna stvar! Postoje mnogi principi kojih bi se trebalo držati. Kao što je spomenuo Nemanja, pravljenje programa u multithreaded okruženju sa globalnim promenljivama svakako nije baš najbolja ideja (globalne promenljive su često izvor grešaka i u "običnim" singlethread programima, a kamoli kad funkcije treba da budu reentrant i slično).
Ako je reč o objektnom programiranju, onda bi trebalo da se prvo ceo program pažljivo isplanira i razdeli na manje celine, uz mogućnost lakog proširivanja i dodavanja novih funkcionalnosti. A to nije baš samo stvar ukusa, već mnogo više stvar detaljnog planiranja i analize problema. Ovaj deo pravljenja programa je možda i značajniji od kasnijeg kodiranja klasa i funkcija i nikako ne sme da bude potcenjen!
Stvar je u tome da ne postoji neko generalno pravilo da li je bolje da npr. funkcija bude članica klase ili da bude eksterna funkcija. To je stvar o kojoj se odlučuje u trenutnoj situaciji u skladu sa tim šta radi ta funkcija, da li je potrebno da kasnije bude nasleđena ili je recimo bolje da transparentno barata i sa baznim i sa nasleđenim klasama. Naravno da u svemu tome do neke mere učestvuje i ukus, ali nije presudan.
U slučaju crtanja onog pravougaonika, moje je mišljenje bilo da funkcija treba da bude interna i to moje mišljenje je bazirano na nekom mom zamišljenom modelu aplikacije u okviru koje se javlja ta klasa. Ali pravo mišljenje o tome da li treba da bude interna, eksterna ili možda članica neke druge klase (tipa bool Display::drawRectangle(Rectangle& theRect);) je stvar dizajna celokupne aplikacije i ne može da se gleda samo za ovako istrgnut primer.
PS: intelligence, experience and taste
... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
... and they named it Bill Gates.