aika Posted February 10, 2012 Report Share Posted February 10, 2012 Tā kā jau zināmu laika sprīdi nespēju atrast argumentus šajā cīņā par labu OOP Nu vot nesanāk. Iespējams ka saturīga saruna pie alus kausa ar labu OOPistu līdzētu, taču ... Šodien iegūglēju šādu sarunu: http://stackoverflow.com/questions/716412/why-use-php-oop-over-basic-functions-and-when un no tās aizgāju līdz: http://www.virtuosimedia.com/dev/php/procedural-vs-object-oriented-programming-oop Kas mani pārsteidza - komentāros to, kas apd1rš OOP ir dāaauz vairāk nekā to, kas aizstāv :) Esot gan tāds teiciens, ka ar muļķiem strīdas tikai muļķi ... bet man no tā vieglāk nepaliek. Tā arī nesaprotu/nespēju sevi piespiest sākt OOPisties :) Visos OOP slavināšanas piemēros kods sanāk garāks, koda lasīšana nesaprotamāka, sintakse ačgārnāka utt Padalies kādā brīdī TU sāki OOPisties un kas tevi uz to piespieda! Skaidrs ka par OOPistu nepiedzimst, visi ir izauguši no procedūrām. Tad kāds kuram ceļš bijis, kāda dzīves klizma līdzējusi un kā?! Quote Link to comment Share on other sites More sharing options...
codez Posted February 10, 2012 Report Share Posted February 10, 2012 1) Autoload. Man šķiet, ka autoload ir viena no skaistākajām PHP lietām, kas ļauj ātri rakstīt kodu. Tev nav jādomā, kur kā, ko esi inclūdojis, tas viss notiek tieši tad un tikai tad, kad tu izmanto attiecīgo klasi. Tas gan paātrina aplikācijas darbību, jo netiek ielādētas un inicializētas liekas bilbiotēkas, gan padara koda rakstīšanu ātrāku, jo nav pat jādomā, vai attiecīgā klase ir pieejama (inklūdota). 2) Loģiskāka aplikācijas struktūra. Objekti ļauj labāk strukturēt kodu, parametri, kas pieder objektam, ir tikai objektam, tie nejaucās kopā ar neko citu. 3) Mantošana. vari uzrakstīt vispārēju objektu, piemēram Controller, kurš dara visu to, ko vajag visiem kontroleriem un tad vienkārši katru kontroleri rakstīt tā, ka tas manto šo: class Controller_Index extends Controller { } Un tam pievienot tālāk papildus tikai to funkcionalitāti, kas attiecas uz attiecīgo kontroleri. 4)Vesela kaudze paternu, kas ļauj rakstīt modulāru un viegli saprotamu un menidžējamu kodu: strategy paterns - filtriemu un dažādām lietām lietām ,kur vajadzīgs rakstīt dažādus algorimus, kas strādā ar noteiktām struktūrām, chaining paterns - ērtam, īsai, bet tai pašā laikā universālam pierakstam, utt. 5)maģiskās metodes. Ļauj tev rakstīt klases, kuras darbojas līdzīgi kā, piemēram, masīvi, bet ļauj tev pielik papildus funkcionalitāti. Piemēram, tu vari uztaisīt ORM modeli, kur klases instancei piekļūst kā masīvam, bet tai pašā laikā šīm darbībām piešķirt papildus funkcionalitāti: class User extends Model{ function onset_name($val){ return 'Mr. '.$val; } } $user = new User(); $user->loadById(); $user['name']='Jonh'; $user->update(); // updeito 'Mr. John'; Quote Link to comment Share on other sites More sharing options...
aika Posted February 10, 2012 Author Report Share Posted February 10, 2012 (edited) vai 1 punkts neparedz katru klasi savā fiziskā failā??!! Baigais mess... 3punkts - nu funkcija jau arī var izsaukt funkciju, inclūds saturēt inclūdu utt... Edited February 10, 2012 by aika Quote Link to comment Share on other sites More sharing options...
daGrevis Posted February 10, 2012 Report Share Posted February 10, 2012 Ne-mess. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted February 10, 2012 Report Share Posted February 10, 2012 Kapeec lai katra klase nebuutu savaa failaa? o_O Tieshi tas jau padara visu struktureetu. Katra klase atbild par kaut ko savu - taadeelj vinja ir nodaliita atsevishkjaa klasee un taadeelj vinja ir savaa failaa. Tu tachu funkcijas (cerams) arii strukturee kaut kaa kopaa nevis samet visu chupaa. Piedevaam deelj autoload tev nevajag uztraukties par to ka ir 100 faili, jo manuaali tev vinjus inkluudot nevajag shaa vai taa. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted February 10, 2012 Report Share Posted February 10, 2012 Struktūra ir viens no galvenajiem ieguvumiem. Kaut vai tas, ka katra funkcija (metode) būs savā klasē. Quote Link to comment Share on other sites More sharing options...
codez Posted February 10, 2012 Report Share Posted February 10, 2012 vai 1 punkts neparedz katru klasi savā fiziskā failā??!! Baigais mess... LOL, mess ir tūkstošiem rindiņu gari faili. Tāpat svarīgi saprast, ka klase sastāv no daudz metodēm, parametriem. Piemēram, vienkārša mysql db klase var būt kā viena klase, kas atrodas vienā failā, man parasti klases ir vidēji no 50 līdz 200 rindiņu garas. Ja klase sanāk garāka, ir skaidrs, ka ir mess un ir jāizdomā, ka šādu funkcionalitāti abstrahēt un sadalīt2 vai variākās funkcionālās daļā. Klases tieši ir jādala pa failiem, jo to automātiski paredz koda atkārtota lietojamība. Vajag jaunā projektā no vēca kaut ko, iekopē tos failus, vai pat moduļus, ja tā organizēta struktūra un izmanto, nevis ej cauri failiem, meklē, kur sākas, kur beidzas kāda funkcionalitāte un mēģini to iekopēt, saorganizēt no jauna. Bez tam, ja tu inklūdo lielus faius ar daudz lieku funkcionalitāti, tad tas aplikāciju noteikti padara pāris reizes lēnāku. 3punkts - nu funkcija jau arī var izsaukt funkciju, inclūds saturēt inclūdu utt... Bet, ja tev ir 2 dažādas funkcionalitātes, kas manto no vienas? Piemēram, tev ir 2 modeļi User un Posts un abi manto funkcionalitāti no Model. Tad tavā gadījumā, kad tu inklūdosi to mantoto funkcionalitāti? Ja abos gadījumos, tad inklūdosies dubultā, vai jātaisa speciāls čeks, kurš čeko, kas ir inklūdots, kas nav un tas atkal padara aplikāciju lēnu. Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted February 10, 2012 Report Share Posted February 10, 2012 Manuprāt, OOP noliek tikai tie, kas nav strādājuši komandā. Pamēģini uzminēt un atrast, vai kāds jau funkciju ar tādu pašu funkcionalitāti kā tev vajag, jau ir/nav uzrakstījis, un kurā failā tā īsti atrodas. Ir gadījies redzēt, kā uzpeld 5 dažādas funkcijas ar vienu un to pašu funkcionalitāti, no kurām 3 pat atradās vienā un tajā pašā failā. Quote Link to comment Share on other sites More sharing options...
404 Posted February 10, 2012 Report Share Posted February 10, 2012 (edited) Funkcijās,lai cik labi tās nebūtu uzrakstītas,visbiežāk sanāk dublēt vienas un tās pašas darbības un ir grūti sekot DRY principam.Vienā skriptā to tik izteikti nejūt,bet ziepes sākas,kad tas ir jāpielāgo jau citam projektam.Tad visai ātri rodas déjà vu sajūta kad viens un tas pats ir jāraksta atkal un atkal. OOP tādā ziņā sabliež vienos vārtos: Uztaisa vienu bāzes klasi,un tik extendo uz nebēdu tikai tās metodes,kurās kaut kas mainās.Ātrumu nevar salīdzināt ar to jātni,kas būtu bliežot visu vienā putrā +arī neticu ka šādi programmējot regulāri nerodas vēlme,lai vairāki variabļi būtu brīvi redzami/pieejami jebkurā no funkcijām.Izmantot globāļus,vai mētāt parametros no vienas uz otru ir mazohisms manuprāt,kad ir iespēja to visu daudz ērtāk izdarīt. Edit: kamēr rakstīju postu,izrādas tas jau tika uzrakstīts :D Edited February 10, 2012 by 404 Quote Link to comment Share on other sites More sharing options...
daGrevis Posted February 10, 2012 Report Share Posted February 10, 2012 Patīk šī atbilde no "staķa": > They don't really have pros and cons at all, IMO. They're simply different approaches to the same problems. Quote Link to comment Share on other sites More sharing options...
aika Posted February 10, 2012 Author Report Share Posted February 10, 2012 ook, jūtu uz ko velk. un kkur jau manīju šo frāzi: OOP ir jēga tur kur tam ir jēga. Skaidrs ka piemēram 10 lapu statiskai lapelei ar vāju CMS nav jēgas urbties OOP. Nav jēga lietot klasi DB conectam, ja to var procedūrā uzrakstīt 1 rindiņā. Problēma tamā, ka aprakstot kas tas OOP ir, tiek lietotas vienkāršas situācijas. Tad loģiski rodas jautājums- kāpēc sarežģīt vienkāršo. :) Acīmredzot OOPisties sāk tad kad ar procedūrām tā esi sap1sies, ka vairāk nevar :) P.S. par failu kaudzi - i get it. Quote Link to comment Share on other sites More sharing options...
codez Posted February 10, 2012 Report Share Posted February 10, 2012 ook, jūtu uz ko velk. un kkur jau manīju šo frāzi: OOP ir jēga tur kur tam ir jēga. Skaidrs ka piemēram 10 lapu statiskai lapelei ar vāju CMS nav jēgas urbties OOP. Nav jēga lietot klasi DB conectam, ja to var procedūrā uzrakstīt 1 rindiņā. Problēma tamā, ka aprakstot kas tas OOP ir, tiek lietotas vienkāršas situācijas. Tad loģiski rodas jautājums- kāpēc sarežģīt vienkāršo. :) Acīmredzot OOPisties sāk tad kad ar procedūrām tā esi sap1sies, ka vairāk nevar :) P.S. par failu kaudzi - i get it. Arī tā nav. Arī īsu projektu var uzrakstīt izmantojot skaistu FW, kas veidots OOP stilā un rakstīt OOP un, ja mācēsi to lietot, rezultātu tik un tā sasniegsi ātrāk un pat to mazo lapiņu pēc pāris mēnešiem varēsi uzturēt daudz vieglāk. Salīdzinājam tas būtu tā, cilvēks sākumā iemācās rāpot, tad iet. Ja tev veikals atrodas 500m no mājām, tad rāpojot tu sap....ies, bet aiziet varēsi bez problēmām. Protams, ja tev veikals atrodas tavā kāpņu telpā, tad var arī līdz viņam aizrāpot, bet pat šijā gadījumā, ja būsi iemācījies iet, tev būs vieglāk. Tāpēc mans ieteikums ir iemācīties beidzot staigāt. Quote Link to comment Share on other sites More sharing options...
codez Posted February 10, 2012 Report Share Posted February 10, 2012 Patīk šī atbilde no "staķa": > They don't really have pros and cons at all, IMO. They're simply different approaches to the same problems. Tā nu gluži nav ar. Ja mēs attiecinām uz konkrētas problēmas risināšanu un šijā gadījumā tā būtu, web aplikāciju izstrāde, atkļūdošana, labošana, uzturēšana un pilnveidošana, tad mēs varam viennozīmīgi sarakstīt kaudzi pros and cons. Quote Link to comment Share on other sites More sharing options...
aika Posted February 10, 2012 Author Report Share Posted February 10, 2012 (edited) eee, es pareizi saprotu - OOP viena no pamatdomām ir veidot nevis universālas 'funkcijas' (uz ko tiecas procedūristi) bet specifiskas maksimāli vienkāršas konkrēta rezultāta funkcijas, kuras maksimāli ērti izsaukt? P.S. nu sry veči... skatos login tutoriāli ( ) 2 daļa, 15mitā minūte, clases fails jau 100 rindas, vēl pat nesam verificējuši useri ...nu ziniet - pāriet uz OOP ir kā no kartingiem pārsēsties Formulā1 - varbūt arī ātri un jaudīgi, bet nu sagatavošanās/iemācīšanās/treniņi utt ļooooti sarežģīti un ilgi. P.P.S - noskatījos un ziniet ... sapratu! A to visos tekstos kkādi abstrakti piemēri par suņiem vai mašīnām, a te konkrēti ko vajag un kā vajag. Un sapratu, ka implementēt šo kodu jebkurā manā lapā man aizņems 4 rindas koda un viens file copy. :) Edited February 10, 2012 by aika Quote Link to comment Share on other sites More sharing options...
eT` Posted February 10, 2012 Report Share Posted February 10, 2012 OOP: vienkāršiem projektiem - nevajadzīga sarežģītība sarežģītiem projektiem - nevajadzīga vienkāršība Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.