Gå til innhold

OOP eller Procedular?


Anbefalte innlegg

Hmm, fant ut at det ikke er mulig å starte poll for vanlige brukere. Så får ta det i vanlig tråd form da.

 

Jeg lurer egentlig bare på hvor mange som bruker oop, og hvor mange som holder seg til procedural kode stil.

Ser så godt som aldri spørsmål her som omhandler OOP PHP, litt merkelig i grunn.

 

Så, kom og svar :)

 

Selv bruker jeg begge, mye av småe kodesnurter som jeg skriver blir i procedural grunnet at det ofte bare er for kjapp testing. Om jeg skal skrive noe mer seriøst er som oftest et OOP modul basert design måten jeg gjør ting på.

Lenke til kommentar
Videoannonse
Annonse

Vel. Må nok innrømme at jeg tidligere har brukt mye prosedyral php. Grunnen til dette, er at jeg skulle vente med OO-php til php5 kom. Foretrekker egentlig objektorientert programmering, så har blitt litt mer av det med tiden. Det tilrettelegger mer for gjenbruk, noe jeg er veldig tilhenger av.

Lenke til kommentar

Skulle da tro at om du brukte OOP (Object Orientated Programming) så ville du vist det selv ;)

 

Men i all enkelhet, ja, det er å skrive kode i form av klasser. Som du senere inkluderer i filer og lager instanser av, såkalte, objekter. Hvor et objekt er en samling av variabler og funksjoner som er innkapslet (Litt fritt oversatt fra: encapsulate).

Lenke til kommentar

Lett fattelig, nei. Dessverre litt små stress å sette seg inn i teorien rundt det.

 

Men et par linker kan du vell få

 

Tutorial fra evilwalrus.com

Tutorial fra sitepoint.com

OO i PHP artikell sak fra sitepoint.com

Tutorial av john coggeshall

Del 2 av linken over

Tutorial fra phpbuilder.com

 

Sjekk også ut forumet på devnetwork.net under "Theory and design" delen. Mye bra lesning.

Forumet på sitepoint.com har også en avansert diskusjon bit som det er mye bra på.

 

Du kan også fint lese OOP teori som ikke er knyttet til PHP, kan være knyttet til andre språk, eller bare ren teori.

 

Edit: Leif. Og, skulle gjerne funnet fram noen bra diskusjoner fra devnetwork forumet, men er nede nå.

Endret av Findus
Lenke til kommentar

Bruker OOP til alle større webaplikasjonene jeg lager. På mindre sider er OOP bare ekstraarbeid, selv om det er en fin måte å jobbe på (provosere OO-fanatikere).

 

OOP er nesten et musst når man begeir seg ut på større nettsider hvor man bruker mye av den samme koden flere ganger.

Lenke til kommentar

OOP i PHP < 5 fungerer ikke på samme måte OOP gjør i andre språk - noe som nok er hovedårsaken til at OOP ikke er så stort innen PHP. Videre er OOP koder tregere.

 

Det er litt vansklig å si hvilken av delene man velger, da det er avhengig av prosjektet. Dersom det er koder som kan være kjekke å bruke i andre scripts er det praktisk å bruke lage en class.

 

Til små scripts er ofte functions mer enn nok.

Lenke til kommentar

OOP er ikke godt nok støttet før PHP 5, det er klart. Men er fremdeles fult mulig å bruke det, og det er da mye brukt. Men PHP er et språk som er brukt av veldig mange, og det er, ikke minst, veldig "pop". Dvs at det er veldig mange som til stadighet er i nybegynner fasen. Da er det jo litt logisk at det meste av diskusjonsforum handler om små feil i koder og slike spørsmål.

 

Jeg ser uansett ingen grunn til å ikke benytte seg av OOP i PHP med versjon 4. Selv om man ikke har støtte for alt som man får i PHP 5 er det mye teori her. Det å tenke OOP, og ikke minst å skrive såkalt korrekt OOP.

 

Jeg lurte selv på om jeg skulle la OOP vente delvis, til PHP5 kom ut, men er glad jeg ikke gjorde det.

 

Og jeg er også litt interesert i din påstand som sier at OOP er generelt sett tregere.

Lenke til kommentar
Har du noe info som utdyper det? 

Trodde du av alle viste det :p

 

-------- QUOTET FEIL INNLEGG ------------

 

Desverre har jeg ikke så mange linker til det, da det er mest omtalt i bøker og artikkler - men har en:

 

http://www.webmasterstop.com/tutorials/eff...y-PHP-OOP.shtml

Dette er en veldig bra test som viser virkelig hvor treg oop er.

 

Finnes sikkert mange tester om dette på google.com

 

Edit:

Og jeg er også litt interesert i din påstand som sier at OOP er generelt sett tregere.
Du også!

 

 

Edit 2:

NB: tonen er ironisk, vil ikke tråkke dere på tærne ;)

Endret av ????????
Lenke til kommentar

Vell, den testen er jo ganske misvisende. Om du bruker OOP til et eksempel som det så burde du allerede ha innsett at det ikke er noe man bruker OOP til.

Det sier seg jo litt selv at det teknisk vil være litt tregere bare av den enkle grunn at det blir mer kode.

Kunne vell vært litt interesant å se en test der man faktisk har kode som bør skrives som OOP, og så sammenlignet fart.

Det finnes gode eksempler på at OOP tankegangen kan misbrukes og fremdeles skrive kode som regnes som veldig bra. Likte det eksemplet hvor (husker ikke hvem) skrev Hello World i OOP slik man etter alle kunstens regler burde. Og klarte, uten error handling, å ende opp på rundt 1500 linjer tror jeg det var.

 

Så alt kommer jo ann på det faktiske prosjektet man skal i gang med.

Men synes ikke man burde tenke "siden php4 ikke har god OOP støtte så venter jeg til php5".

Lenke til kommentar

OOP er absolutt en fordel, spesielt store scripts blir lettere å håndtere for programmerere. Bare merk at OOP + avanserte spørringer + en del besøkende fører faktisk til en del tregere scripts.

 

Findus - må du si i mot alt i dag? OOP er tregere, det er ikke mange som tviler på det. Selv har jeg utviklet et par ganske store komersielle scripts, i tillegg til noen hobby prosjekter med folk fra hele verden. Så det er ikke noe problem å vise at OOP er tregere.

Lenke til kommentar

Helt, klart, OOP er tregere. Sier vel seg egetnlig selv siden serveren da må arbeide med mer kode, samt gjøre klassen tilgjengelig for scriptet osv.

 

Men den linken du gav var nok så missvisende, ????. Jeg sier ikke at OOP ikke er tregere, men ikke så treg den linken skal ha det til. Det der er rett og slett feil bruk av OOP. Å kalle opp den samme klassen 100000 ganger er rett og slett tull! Hvorfor ikke kalle opp klassen kun en gang utenfor løkken i stedet, og dermed bruke den slik den skal innenfor løkken.

 

Jeg lagde min egen benchmarktest med nøyaktig de samme scriptene, bare at jeg kalte opp klassen kun èn gang utenfor løkken. Resultatetene ble slik:

 

OOP

2.96097922325

2.87925291061

2.88808202744

 

Funksjon

1.88741803169

1.93463397026

1.89495301247

 

Vanlig

0.989305019379

1.03154301643

1.02104902267

 

Man ser også helt klart ar OOP kommer dårligst ut, men ikke i like stor grad som i eksempelet du gav oss link til, ???. Dessuten er også dette feil bruk av OOP. En hver med litt peiling ville aldri lagt en OOP variabel inni en slik loop, men heller lagt loopen inni klassen. Når jeg gjorde det fikk jeg følgende resultater:

 

1.03102707863

1.19265294075

1.13392996788

 

Dette var mye bedre, ikke sant? Så lenge man lærer seg ordtentlig praksis innen OOP, og legger alle de tunge oprasjonene på innsiden av klassen, er det minimum med forskjell på de to metodene. OOP vil alltid være et lite hakk etter, men ikke i så stor grad som linken du henviste til påstår. Det eneste den linken viser oss, er hvordan man absolutt ikke skal programmere OOP.

 

No offence, men den linken var et skikkelig dårlig eksempel :)

Lenke til kommentar
No offence, men den linken var et skikkelig dårlig eksempel

 

Hvorfor klager dere på den siden? Den viser bare data behandlet i oop, alle ser jo at det ikke er noen vanlig kode. Siden tar for seg et test, der OOP gir det resultatet dere ser. Poenget er jo ikke koden som brukes med hastigheten. Det er ikke en uvanlig måte å teste på, da det ikke finnes noen oppskrift på hvordan php koden til sider ser ut. Den vil variere sterkt og hastigheten varierer fra side til side.

 

Når man tester pc'er, prosessorer ol. så tester man ofte ting som ikke er realistisk, men det gir en indikasjon.

 

Denne tråden virker sikkert litt streng, men den er ikke ment slik ;)

Det gjelder ikke alltid å finne feil - ofte er det bedre å tolke det man ser :thumbup:

En hver test vil jo ha svakheter i forhold til sin egen kode.

Lenke til kommentar

Jeg klager over siden fordi jeg ikke likte sluttkommentaren. Selvfølgelig, mannen har jo et poeng. Men jeg mener den testen der gir et feil inntrykk av forskjellene. Han sier til slutt at OOP er opptil 635% tregere. Dette stemmer i han tilfelle med forferdelig bruk av OOP. Men det stemmer ikke for en med litt mer erfaring.

 

Det jeg prøver å si er at han som har laget denne benchmarken burde fokusere mer på forskjellen mellom de to måtene når de brukes riktig. Så får han heller prøve å regne ut hvor mye treigere OOP er på en side med X antall treff i sekundet. Mitt eksempel viste at OOP er 10% tregere når en klasse blir opprettet og kjører en loop 100000 ganger.

 

Hans eksempel illustrerte en side som blir kjørt 100000 ganger og printer et tall èn gang. Kanskje han burde uttryk det bedre?

 

Uansett, nå gidder jeg ikke kverulere mer om bagateller. :) OOP er tregere, uansett. Men jo større hver side er, og jo flere opprasjoner scriptet skal utføre per gang det kjøres, jo mindre blir forskjellene. Det betyr med andre ord at større portaler som utfører mange regneoprasjoner (som befiner seg inni klassen selvfølgelig), ikke nødvendigvis taper så mye på å kjøre OO. Men om det er snakk om å utnytte en klasse så dårlig som i det tilfellet her, er det helt klart en fordel å unngå klasser. Men så er jo gjerne poenget med klasser å benytte det flere ganger gjennom et script, enn å bare opprette den for å utføre èn enkel oprasjon. Enig? :)

Lenke til kommentar
Findus - må du si i mot alt i dag? OOP er tregere, det er ikke mange som tviler på det. Selv har jeg utviklet et par ganske store komersielle scripts, i tillegg til noen hobby prosjekter med folk fra hele verden. Så det er ikke noe problem å vise at OOP er tregere.

Hehe. Nei, må ikke si i mot alt i dag(går).

Kanskje jeg uttrykte meg litt dårlig, men, det er jo selvsagt at OOP er tregere. Enkelt å greit grunnet at du innkapsler informasjon og funksjoner i et lag. Men den testen synes jeg som sagt er litt misvisende, da det er noe ingen som kan OOP ville gjort på den måten.

Men total vurderingen, i en litt større applikasjon, så vil man ende opp med et produkt som er lettere å endre og lettere for andre å lese. (Forutsatt at man har gjort ting på en bra måte da).

Hele applikasjonen vil gå litt tregere, noe som i mange tilfeller ikke vil merkes grunnet at PHP i utgangspunktet er veldig kjapt, forutsatt at man ikke har overbelastet server.

 

Hadde egentlig ikke noe ønske om å diskutere om OOP er bra eller ikke, og heller ikke ønske om å sammenligne OOP og PP, da begge har sine bruksmål.

Ønsket bare å se hvor mange som faktisk brukte OOP her, da så og si all diskusjon på forumet omhandlet PP problemer.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...