Autor | Zpráva | ||
---|---|---|---|
Tirus Profil |
#1 · Zasláno: 25. 3. 2011, 21:54:45
Co si myslíte že je lepší když neovládám OOP? Učit se ho průběžně při psaní stránek a nebo pokračovat ve scriptování v procedurálním stylu a pomalu přecházet na OOP?
Mám svůj kód na takovej nic moc RS, zmatenej a nepřehlednej. Chci ho zdokonalit a napadá mne, že bych ho vylepšil a zmenšil. zpřehlednil, apod.. a postupem času, ho předělal celej do OOP. Nebo to mám rovnou "mastit" do OOP? |
||
ShiraNai7 Profil |
#2 · Zasláno: 25. 3. 2011, 22:21:27
Neexistuje žádný mezistupeň mezi procedurálním stylem a OOP - protože cokoliv mezi je prostě paskvil. Předělávat větší aplikace do OOP je dost náročné, vyplatí se to spíš napsat znovu.
|
||
Tirus Profil |
#3 · Zasláno: 25. 3. 2011, 22:27:28
ShiraNai7:
tím mezistupněm myslím jen například pro DB využít dibi a pro šablony bTemplates... jinak jet v procedurálním stylu |
||
ShiraNai7 Profil |
#4 · Zasláno: 25. 3. 2011, 22:43:23
To pak není tvá aplikace ale OOP no, jen používáš cizí OOP doplňky. To je jedno, udělej to tak, jak ti to vyhovuje. Já třeba preferuji psát si vše v OOP sám (např. šablonový systém i ten databázový wrapper). Určitě se to nedá naučit naráz, nicméně používáním hotových věcí se to nenaučíš.
|
||
Tirus Profil |
#5 · Zasláno: 25. 3. 2011, 22:47:15
ShiraNai7:
jo to máš pravdu. Rád bych si to vše napsal sám.. ale nějak nemám tucha, jak takovej šablonovej systém udělat :( |
||
Joker Profil |
#6 · Zasláno: 25. 3. 2011, 22:57:12
Tirus:
Souhlas se ShiraNai7, procedurální a objektové programování jsou různé způsoby nahlížení na problém jako takový, takže nějaký „procedurálně-objektový“ skript nejspíš dopadne jako procedurální skript ve kterém je sem tam pohozený nějaký objekt. |
||
ShiraNai7 Profil |
#7 · Zasláno: 25. 3. 2011, 23:02:16 · Upravil/a: ShiraNai7
Tirus:
Komplexní šablonový systém není zrovna jednoduchý na napsání no. Možná začít s něčím jednodušším. |
||
meris Profil |
#8 · Zasláno: 25. 3. 2011, 23:04:07
Tirus:
Vyzkoušet Javu. Na učení OOP je v ní hodně návodů a tutoriálů. Budete li psát OOP jen v php, tak budete mít tendenci používat stávající procedurální přístup. Vyzkoušíte li si OOP v jiném jazyku, bude to pro Vás jednoduší se soustředit na čistý objektový návrh a postup. A právě Java je na to docela šikovný jazyk. |
||
H13 Profil |
#9 · Zasláno: 26. 3. 2011, 13:43:06 · Upravil/a: H13
Neexistuje žádný mezistupeň mezi procedurálním stylem a OOP - protože cokoliv mezi je prostě paskvil
Nejsem odborník ani na php ani na oop, ale používám právě ten mezistupeň a asi nejsem sám. Podle mě je např. statická metoda (třída) vlastně takovej procedurální styl v OOP. Pokud volám statickou metodu, je to jako kdybych v procedurálním stylu volal standardně funkci. A vídávám to i v kódech, který jsem nenapsal. Vyloženě bych to nenazval paskvilem. A přepisovat to např. do singletonu (v některých případech), aby to vypadalo více objektově, to mě připadá tak trochu divný. Ale jak říkám, nejsem odborník, takže se možná mýlím. :-) |
||
ShiraNai7 Profil |
#10 · Zasláno: 26. 3. 2011, 16:23:53 · Upravil/a: ShiraNai7
H13:
OOP neznamená, že musíš používát objekty. Jde o hlavně o zapouzdření kódu a abstrakci... přečti si o tom třeba na wikipedii. Sám používám statické třídy tam, kde je jejich použití vhodné - např. právě ty "singletony" pro řídící třídy, u kterých nedává smysl vytvářet jejich instance. |
||
H13 Profil |
#11 · Zasláno: 26. 3. 2011, 16:30:29 · Upravil/a: H13
ShiraNai7:
OOP neznamená, že musíš používát objekty Napsal jsem snad někde něco takového? |
||
ShiraNai7 Profil |
#12 · Zasláno: 26. 3. 2011, 16:32:30 · Upravil/a: ShiraNai7
H13:
„Podle mě je např. statická metoda (třída) vlastně takovej procedurální styl v OOP.“ Statická třída není žádný procedurální styl v OOP, to je blábol :) „Pokud volám statickou metodu, je to jako kdybych v procedurálním stylu volal standardně funkci.“ Stejně jako metodu u objektu :) |
||
psychopat Profil * |
#13 · Zasláno: 26. 3. 2011, 16:38:19
H13:
„OOP neznamená, že musíš používát objekty“ jenom pro doplnění znalostí, nedal by sem někdo kousek OOP kódu bez jediného objektu ? |
||
ShiraNai7 Profil |
#14 · Zasláno: 26. 3. 2011, 16:40:45
psychopat:
Napsal jsem to jednou a napíšu to zase - jde o zapouzdření procedur v programu. Máš nějaký validní důvod nepovažovat statickou třídu za objekt-singleton? |
||
H13 Profil |
#15 · Zasláno: 26. 3. 2011, 16:41:01 · Upravil/a: H13
function vratAno() { return "Ano"; } echo vratAno(); vs. class Neco { public static function vratAno() { return "Ano"; } } echo Neco::vratAno(); Podle mě (znovu opakuji, nejsem programátor a netvrdím, že je to správně) je to stejnej styl, stejně tak se podle mě nedá určit hranice mezi OOP a procedurálním stylem, protože i v OOP se programuje prostě procedurálně. |
||
ShiraNai7 Profil |
#16 · Zasláno: 26. 3. 2011, 16:58:28
H13:
Ve výsledku není mezi OOP a non-OOP kódem rozdíl. O to ti jde? A pointa? |
||
H13 Profil |
#17 · Zasláno: 26. 3. 2011, 17:08:25 · Upravil/a: H13
ShiraNai7
A pointa? uvedená již v [#9] Stručně: " Neexistuje žádný mezistupeň mezi procedurálním stylem a OOP - protože cokoliv mezi je prostě paskvil ... Vyloženě bych to nenazval paskvilem ... " :-) |
||
breeta Profil |
#18 · Zasláno: 26. 3. 2011, 17:08:31 · Upravil/a: breeta
Tirus:
„Nebo to mám rovnou "mastit" do OOP?“ Jde o to že když se to budeš snažit psát OOP a budeš používat MVC tak bude kód přehlednější a bude ho míň, tím pádem ti ulehčí práci. Nic víc nic míň za tím nehledej .... |
||
Johnik Profil |
#19 · Zasláno: 26. 3. 2011, 17:11:17
breeta:
To neplatí vždy. Hlavním důvodem proč psát v OOP je možnost dědičnosti a zapouzdření logicky souvisejících věcí do objektů. |
||
breeta Profil |
#20 · Zasláno: 26. 3. 2011, 17:16:58
Johnik:
„To neplatí vždy. Hlavním důvodem proč psát v OOP je možnost dědičnosti a zapouzdření logicky souvisejících věcí do objektů.“ No a z toho plyne to co jsem psal .. :-) |
||
Johnik Profil |
#21 · Zasláno: 26. 3. 2011, 17:23:21
breeta:
Reagoval jsem na to bude ho míň, přehlednější bude při správném návrhu a použití určitě. |
||
ShiraNai7 Profil |
#22 · Zasláno: 26. 3. 2011, 17:24:57
H13:
To není pointa, ale blábol. Koneckonců je to jedno - chápejte a praste si to jak chcete :) |
||
H13 Profil |
#23 · Zasláno: 26. 3. 2011, 17:33:33 · Upravil/a: H13
ShiraNai7:
To není pointa, ale blábol. Koneckonců je to jedno - chápejte a praste si to jak chcete :) Ta pointa je právě v tom, že ten, kdo programuje stylem, který jsi nazval mezistupňem, nemusí vyrábět paskvil a zároveň nemusí prasit kód. Důvod mé reakce je pouze a jen v tom, že se nemusí začátečníkům nalhávat něco v tom smyslu, že ten, kdo to dělá věci jinak než ty, prasí kód a vyrábí paskvil. |
||
ShiraNai7 Profil |
#24 · Zasláno: 26. 3. 2011, 17:43:58
H13:
Psát část kódu OOP stylem a zbytek jinak je paskvil, o tom snad není třeba diskutovat. Mi je jedno že to funguje. Kdyby ho to nezajímalo, tak si tam prasí co chce a neptá se na diskusi. |
||
H13 Profil |
#25 · Zasláno: 26. 3. 2011, 17:59:05 · Upravil/a: H13
ShiraNai7
Psát část kódu OOP stylem a zbytek jinak je paskvil Ale to jsem přece nikde nenapsal (už podruhé) Nelze určit hranici mezi procedurálním kódem a OOP -> nelze tedy přesně stanovit co je styl OOP a co styl procedurální (jak jsi napsal v #16) -> nelze tedy něco považovat za mezistupeň -> nelze tedy o něčím kódu na základě tohoto tvrzení psát, že je to paskvil nebo prasení. Běžně pracuju s kódem, který (když už to tak nazveme) obsahuje jak vyloženě "procedurální kód", tak "OOP kód" v externích knihovnách, a rozhodně bych to nenazval paskvilem, stejně tak není v mých silách, předělávat externí knihovny do jednotného "OOP stylu" - eterní knihovny napsané v "OOP" a nebo "procedurálně" jsou dobře čitelné, srozumitelné, a přehledné. A i kdybych si definoval nějakou hranici, co je OOP a co už OOP není, stejně bych nadále využíval kombinaci obou dvou bez toho, aniž bych se strachoval o to, jestli je to paskvil nebo prasení. |
||
ShiraNai7 Profil |
#26 · Zasláno: 26. 3. 2011, 18:56:26
H13:
„Nelze určit hranici mezi procedurálním kódem a OOP“ A na to si přišel jak? V OOP kódu máš vše uzavřené ve třídách a jejich instancích. V procedurálním máš globální funkce a hromadu includů, nejlépe spojenou s prasením HTML přes echo/print přímo v PHP. „A i kdybych si definoval nějakou hranici, co je OOP a co už OOP není, stejně bych nadále využíval kombinaci obou dvou bez toho, aniž bych se strachoval o to, jestli je to paskvil nebo prasení.“ Využívej :) Mi jsou tvé kódy buřt. Vyjadřuju tu akorát svůj názor, že kombinovat OOP a non-OOP kód je prasení a stojím si za tím. Nikomu nic nenutím. |
||
Joker Profil |
#27 · Zasláno: 26. 3. 2011, 19:28:09
H13:
„Nelze určit hranici mezi procedurálním kódem a OOP -> nelze tedy přesně stanovit co je styl OOP a co styl procedurální“ Jakto že ne? Mám problém k řešení. Imperativní přístup (jehož součástí je procedurální programování): - Rozdělím problém na menší problémy. To dělám tak dlouho, až dostanu dostatečně jednoduché problémy. - Pro každý dílčí problém najdu a implementuji algoritmus, který ho řeší. - Řešení dílčích problémů skládám tak, aby celek řešil původní problém. Objektový přístup: - Identifikuji v problému jednotlivé třídy objektů. - U jednotlivých tříd popíši jejich vlastnosti (atributy a metody). - Zjistím, jak spolu objekty musí komunikovat, aby řešily daný problém. Že jde udělat procedurální kód formálně používající objekt je jasné: class Aplikace{ public static function main() { výkonný kód aplikace } } Aplikace::main(); |
||
H13 Profil |
#28 · Zasláno: 26. 3. 2011, 20:04:21 · Upravil/a: H13
Že jde udělat procedurální kód formálně používající objekt je jasné:
class Aplikace{ public static function main() { výkonný kód aplikace } } Aplikace::main(); - ale to není objektově-orientované programování. A to se snažím naznačit, že to tak v mnoha případech a mnoha projektech je (a tím myslím i tu hranici, kdy jeden to považuje za OOP a druhý za "procedurální kód formálně používající objekt" ), já bych to paskvilem nenazval, někdo jiný (ShiraNai7) ano. ShiraNai7 Využívej :) Mi jsou tvé kódy buřt. Vyjadřuju tu akorát svůj názor, že kombinovat OOP a non-OOP kód je prasení a stojím si za tím. Nikomu nic nenutím. A já vyjadřuju názor jiný (ne opačný - sám mám rád aplikace typu MVC), také nikomu nic nenutím. |
||
unlucky Profil |
#29 · Zasláno: 26. 3. 2011, 20:09:55
zacinal jsem s php a ve skole mel javu s oop. Do tedka oop porad nechapu i kdyz javu jsem mel rok a pul :D
|
||
Joker Profil |
#30 · Zasláno: 26. 3. 2011, 20:20:40
H13:
„A to se snažím naznačit, že to tak v mnoha případech a mnoha projektech je“ Jenže to není objektově-orientované programování. Ten příklad co jsem napsal je přesně totéž jako když vezmu binární data, na začátek dám <data><![CDATA[ , na konec ]]></data> a budu tvrdit, že je to XML.
|
||
Téma pokračuje na další straně.
|
0