Primena Dizajn Paterna u radu
Citam sa vremena na vreme o misticnim dizajn paternima.
I nekako ne vidim gde bih primenio i da li treba uopste da ih znam (opterecujem njima). Na primer znam za MVC, HMVC, Decorator, Facade, ... I na primer CodeIgniter se zasniva na MVC. Ja koristim CodeIgniter ili neki drugi framework, API ili nesto slicno. To je vec primenjeno od paterna sta ima da se primeni. Kakav patern ja mogu da primenim dok radim projekat u CI? Cak i kada primenim nesto na primer Singleton Pattern, ja to uradim jer mi nesto tako treba a ne zato sto znam da postoji Singleton Pattern. Cujem da ih ima preko 200, pa ko ce to pamtiti. Dok programiras primenjujes svoju neku logiku, i ne razmisljas da li postoji patern ili kako se zove to sto si primenio. U redu ako je neko project manager, pa treba da smisli neku app, pa kao ajde ovo da primenimo da organizujemo ovako -onako. Ali ne vidim sebe kao obicnog programera u toj nekoj prici i nikako ne vidim zasto je tako korisno znati paterne i kako ih primeniti u radu. Ako neko ume malo da pojasni bio bih zahvalan. |
Dizajn paterni su veoma korisni i nisu misticni :)
Ako radis mali projekat (npr. 1 ili 3 stranice) nece ti trebati neki specijalni paterni. Ali kad imas veliki projekat gde programira puno developera, ako svako pravi paterne na svoj nacin dobije se jedno veliko djubre od koda (ovo se u realnosti i desava). Prednost paterna je da standardizju stvari pa kad radis u velikom timu mozes lako komunicirati sa drugim developerima, gde ne moras da objasnjavas neki tvoj patern, koji u stvari vec postoji i ima ime. Sem toga, kad ih znas brze i bolje mozes da napravis resenje nekog probleme. A da ne pricam koliko je nekom lakse da cita tvoj kod ili ti neciji. Ima stvarno jako puno stvari zbog kojih je dobro znati ih, po meni ces ih vremenom i nauciti hteo ili ne hteo. Pa ces videti koliko mogu biti korisni. I project manager-e bas briga za dizajn paterne, njih primenjuju programeri... |
A mane paterna je kad se koriste i kad ne treba. Pa imaš abstract factory koji ti pravi proxy-je koji su compositi, a sve je to mogao da bude običan objekat. Samo je neko "preinženjerisao" rešenje da bi pokrilo sve moguće buduće promene, a u praksi je samo svima otežao snalaženje u kodu. Ok je ako stvarno postoji potreba, ali često se paterni primenjuju po automatizmu i kad nešto mnogo prostije završava posao.
Izmislio sam primer ali u praksi situacija zna da bude još mnogo gora. Naročito u Javi kad imaš par framework-a u projektu i pukne ti nešto dobiješ stack trace od 100 linija, pri čemu je tvoj konkretan kod u kome je bug negde u 63. liniji. |
Veci problem od "overused" bi bio "misapplied" - ni jedan ni drugi problem ne bih mogao da svrstam u manu paterna, vec manu programera - nazalost i to se realno desava.
|
Ok, to sa radom u timu ima smisla...
Ali koje to paterne treba sve da znam, jer ima neko uputstvo (jos ako je primenjeno za php a ne Javu). Problem je i sto i ljudi iz Laravel framework-a zestoko kritikuju MVC i HMVC, kao da su to losi paterni. A sad treba da ih znam i koji su losi a koji dobri. Jel ima neka okvirna brojka i gde se upoznajete sa nekim novima ako nije tajna? Ali opet nisam siguran da se oni bas toliko cesto koriste ili gresim? Mislim ako uzmes CI koliko paterna mozes da primenis u radu sa samim framework-om. Ja nesto nisam bas primetio da koristim neki patern, mozda singleton i to ako bas zatreba.. |
Ova knjiga je meni bila odlicna http://www.apress.com/9781430229254 i tice se bas PHP-a.
A, za ostalo se opusti i upusti. Neces sve procitati i nauciti iz knjige, moraces dosta toga i sam da zakljucis. Uzmi neki FW (ne CI) koristi ga i ispituj, uci uz njega. ZF2, Symfony2 su danas popularni, a priblizava im se Laravel4. |
:confused:
spezia, može link ka kritici MVC-a i HMVC-a? |
A mene zanima zasto je CI nepozeljan, vidim da ga profesionalci (pre)cesto pljuju.
I, ima li drugog frameworka sa tako dobrom dokumentacijom (da pocnemo da ucim, dok je vreme)? :D |
^ Imas jako puno postova na tu tamu na ovom forumu, a i online.
Cinimi se da i ti i @spezia trazite neku knjigu koju cete da procitate i onda cete sve znati :1095: Zaposlite se negde (ako ne radite) i pocecete da ucite makar iz lose prakse... |
@Miroslav Ćurčić : pogledacu danas da nadjerm, gde sam citao kad se vratim sa posla...
@tasmaniski : ja vec radim ali u CI, pravila firme. @sinisake : Moje subjektivno misljenje, mnogi su protiv Meka. A ako si gladan odi tamo i najesces se iako ga mnogi kritikuju. Mnoge firme u Srbiji rade CI i radice ga i dalje, cak i firma u kojoj radim. Nema nameru da menja CI. Mnogi framework-ci imaju dobru dokumentaciju. Danas sve vise knjiga izlaze o svakom, sve vise tutorijala. Tesko je da nadjes da neko nije dobro dokumentovan kao CI.Pa ni CI nije dobro dokumentovan (mislim da je sve napisano ). Neke funkcije smo primenili, jer smo pogledali ispod haube a nigde ih nema u dokumentaciji. Nemoj slepo samo da se drzis dokumentacije. Ali treba da vodis racuna o sledecem-> ko je zastupljen na trzistu. Nauci na primer Laravel. Pa pogledaj na netu koliko ces naci posao za CodeIgniter programere a koliko za Laravel. Poenta je da radis i zaradis pare. Bolje da se sto pre zaposlis, nego da cekas posao za Laravel. Pogledaj Drupal i Wordpress koliko su lose pisani. Oni su 100 puta gori od CI. A moj drug zaradjuje 1400 eura mesecno (pise plagine za Drupal, u firmi koja radi iskljucivo samo Drupal) i ne zanima ga ni Laravel ni Symfony ni Dizajn paterni. Drupal je popularniji od oba i nece propasti (ima najveci community posle Linux-a u open source svetu (to sam procitao negde), a sto je veci community to znaci i vise klijenata, veca sigurnost, vise posla, vise para). Na tvom mestu bih se orijentisao gde ima vise oglasa, ono sto se trazi na trzistu rada, da se lakse zaposlim. A kad se zaposlis imaces dobru platu i to je vec dobro. Posle se sam usavrsavas da vidis neke novine i budes bolji u svom poslu. Malo sam vise otisao u off sa ovim postom :) |
Vreme je GMT +2. Trenutno vreme je 13:32. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.