OOP vs. Procedural v PHP
OOP vs. Procedural v PHP
Caute.
Prisiel som s dalsou hlboko filozofickou otazkou.
OOP vs. Proceduralne programovanie v PHP.
Z technickeho hladiska - co je lepsie?
Nezaujima ma nazor vymastencov ktori nevedia citat proceduralne napisany kod a preto pochvalia OOP. Zaujima ma z technickeho hladiska - preco by som mal uprednostnit OOP?
Prinesie to lepsi "vykon" danej aplikacie alebo mi to "len" skrati cas potrebny na jej vyvoj?
Alebo???
Vdaka.
Prisiel som s dalsou hlboko filozofickou otazkou.
OOP vs. Proceduralne programovanie v PHP.
Z technickeho hladiska - co je lepsie?
Nezaujima ma nazor vymastencov ktori nevedia citat proceduralne napisany kod a preto pochvalia OOP. Zaujima ma z technickeho hladiska - preco by som mal uprednostnit OOP?
Prinesie to lepsi "vykon" danej aplikacie alebo mi to "len" skrati cas potrebny na jej vyvoj?
Alebo???
Vdaka.
-
TGiJack
Medium Star
- Príspevky: 419
- Registrovaný: 30 nov 2006, 19:37
- Bydlisko: NO
- Kontaktovať používateľa:
prestne tak ako napisal zaggi v 2 bode ..ak si objekt dopre zapuzdril a všetko pozapisoval tak ho možeš potom použiť pri nových projektoch len si ho skopiruješ zadaš par vstupných dat a hotovo to čo by trvalo niekolko minut si spravil za par sekundzaggi napísal:OOP ti:
1. Zjednodusi ti jej udrzbu (hlavne ked sa k nej vratis po dlhsej dobe)
2. Umoznuje jednoducho prenasat uz nakodene objekty do inych projektov prostym kopirovanim (za predpokladu ze su spravne napisane)
-
vivaSlovakia
Guru wannabe
- Príspevky: 2119
- Registrovaný: 29 júl 2006, 10:30
-
Mek
Addict
- Príspevky: 4661
- Registrovaný: 23 mar 2005, 23:00
- Bydlisko: ZA <-> TN
- Kontaktovať používateľa:
Ja som zastancom proceduralneho programovania. Ak viem, ze nieco budem potrebovat aj v inom projekte (reusability), tak si na to spravim funkciu. A o tom to cele je. Podla mna su objekty akurat tak riadne neprehladne - jeden extenduje druhy, ten druhy zase treti, potom sa tam nieco vola, vznikaju instancie a hovadiny, a hned clovek nevie kam z konopi... teda toto plati ak sa pozera na cudzi kod.
Jedinu aplikaciu, co som musel kodit kompletne v objektoch, som kodil v Jave (lebo tam sa inak ani neda, vsak
). Skratka som tomu na chut neprisiel.
Nezda sa mi vhodne pchat objekty uplne vsade a vsetko kodit objektovo, ked sa to ani moc nehodi. Aplikacia, ktora ma byt kodena objektovo, musi mat taku povahu. Napriklad taky DOM - document object model - to priam zvadza k implementacii objektami, a veruze je to aj takto implementovane. A robi sa s tym paradne
Cize oba pristupy maju svoje vyhody a nevyhody, je to len vecou programatora, ktory zvoli.
Jedinu aplikaciu, co som musel kodit kompletne v objektoch, som kodil v Jave (lebo tam sa inak ani neda, vsak
Nezda sa mi vhodne pchat objekty uplne vsade a vsetko kodit objektovo, ked sa to ani moc nehodi. Aplikacia, ktora ma byt kodena objektovo, musi mat taku povahu. Napriklad taky DOM - document object model - to priam zvadza k implementacii objektami, a veruze je to aj takto implementovane. A robi sa s tym paradne
Cize oba pristupy maju svoje vyhody a nevyhody, je to len vecou programatora, ktory zvoli.
Súhlasím, tiež by som to takto formuloval.pheo napísal:OOP alebo procedurálne ... by som nazval spôsob myslenia pri programovaní. OOP vzniklo preto aby bol kód lahko napisatelny, prehladny, udržiavateľný, znovupoužiteľný , myslím si že zvýšenie výkonu by som tam nehľadal.
pokial si dobre pamatam, tak jednoduchy script pisany v OOP by mal byt o nieco malo pomalsi v porovnani s proceduralnym kodom. nie som si vsak tymto isty na 100%. OOP sa da vyuzit napriklad pri kodeni viacerych CMS systemov. implementacia objektov je praktickejsia ako prerabanie (a nasledne upravovanie) function listu z ineho CMS. myslim, ze proceduralny kod je zrozumitelny kazdemu a citanie tohto kodu je imho o dost jednoduchsie ako sa snazit vysomarit z objektov.
-
harrison314
Hardcore addict
- Príspevky: 8224
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
V dnesnej dobe sa cokolvek zlozitejsie ci uz je to web, alebo nejaka aplikacia pomocou proceduralneho programovania robit neda. Ak si zastanca proceduralneho programovania tak tvoj projekt moze:
a.) byt dokonceny a zastavit sa a budes spokojny zastanca proceduralneho nadalej
b.) byt velmi uspesny a bude sa rozrastat, rozrastat a este viac rozrastat, az zistis, ze si uz neni schopny mat prehlad vo svojich kodoch, akakolvek uprava ti trva neprimerane velke mnozstvo casu, kvoli jednej zmene musis upravovat tu istu vec vo velkom mnozstve kodov a potom pochopis, ze v roku 2009 je kodovat proceduralne nieco ako jazdit rally na trabante ...
a.) byt dokonceny a zastavit sa a budes spokojny zastanca proceduralneho nadalej
b.) byt velmi uspesny a bude sa rozrastat, rozrastat a este viac rozrastat, az zistis, ze si uz neni schopny mat prehlad vo svojich kodoch, akakolvek uprava ti trva neprimerane velke mnozstvo casu, kvoli jednej zmene musis upravovat tu istu vec vo velkom mnozstve kodov a potom pochopis, ze v roku 2009 je kodovat proceduralne nieco ako jazdit rally na trabante ...
-
pheo
Light Star
- Príspevky: 212
- Registrovaný: 20 sep 2005, 16:53
- Bydlisko: moje hniezdo
- Kontaktovať používateľa:
zaoberať sa pomalosťou OOP pri programovaní webu je zbytočné, takýto problém riešiš na najnižšej úrovni - ASM, C ... Skôr si treba všímať čo ti OOP prinesie, zjednodušenie kódu. Samozrejme si to vyžaduje určitú prax a študovanie návrhových vzorov, pre niekoho kto programoval v C v PHP < 5 doteraz sa to môže zdať zbytočné.
Už len taká drobnosť ako zapúzrenie a polymorfizmus ti dokáže sprehľadniť kód - nie stovky metód a každá na niečo iné - len zopár objektov a v nich zopár metód - prehľadné.
Prípadne programovanie cez interface, ti umožní zmeniť celú vrstvu (databázu, zobrazovaciu vrstvu) programu bez nutnosti úpravy ostatných, AOP ti umožní tvoj kód zjednodušiť ešte viac - môžeš z neho odstrániť opakujúce sa časti. Pri použití architektúr ako inverzia kontroly dokonca odstrániť referenčné závyslosti a vytvoriť tak malé ľahko testovateľné jednotky.
Alebo môžeš ostať pri procedúrach ... každému podľa jeho gusta.
Už len taká drobnosť ako zapúzrenie a polymorfizmus ti dokáže sprehľadniť kód - nie stovky metód a každá na niečo iné - len zopár objektov a v nich zopár metód - prehľadné.
Prípadne programovanie cez interface, ti umožní zmeniť celú vrstvu (databázu, zobrazovaciu vrstvu) programu bez nutnosti úpravy ostatných, AOP ti umožní tvoj kód zjednodušiť ešte viac - môžeš z neho odstrániť opakujúce sa časti. Pri použití architektúr ako inverzia kontroly dokonca odstrániť referenčné závyslosti a vytvoriť tak malé ľahko testovateľné jednotky.
Alebo môžeš ostať pri procedúrach ... každému podľa jeho gusta.
zaggi napisal:
To, ze upravujes jednu vec vo velkom mnozstve kodov nema nic spolocne s OOP. Je to chyba akehokolvek programovania. OOP ma ine vyhody ako napr. pubic, private funkcie, lahko sa vyznas vo funkciach, ktore su volane priamo alebo inymi funkciami, takze nemusis robit dokumentaciu atd...kvoli jednej zmene musis upravovat tu istu vec vo velkom mnozstve kodov