15. december 2011 - 10:36Der er
10 kommentarer og 1 løsning
Blande OOP og "normal" sammen
Hejsa,
For det første, hvad hedder det hvis det IKKE er Objekt Orienteret Programmering? :-)
--- Jeg lavede en tråd for noget tid siden, omkring at lave OOP, og det resulterede i at jeg nu er igang med OOP og nyder det indtil videre :-)
Jeg er dog lidt i et problem: Jeg har en pager class, som jeg ikke kan få det til at fungere når det skal være OOP. Men min pager virker, hvis jeg har den i "normal" programmering.
Så jeg tænke på, "bare" at gøre det - det skal være til et forum, hvor man kan få vist alle tråde. Så er det ikke så pænt at det bare køre derud af i al uendelighed ;-)
Efter at have tænkt lidt over spørgsmålet, der faktisk er dybere end som så, fik jeg lyst til at fyre et standpunkt af, der måske kan give mig tæsk.
IMHO: Hvis det er af hensyn til læsbarhed er det fuldstændigt ligegyldigt om man bruger gammeldaws procedure eller OOP. Sproget er osse ligegyldigt om det f.eks. er konverserende som APL eller kompileret som f.eks. C eller FORTRAN.
Det er min påstand at, hvis man fra edb-alderens start havde brugt pengene til at uddanne programmører der kunne deres fag, kunne man have sparet mange penge på at udvikle sprog og metoder der kun har det ene formål at det skal være muligt for vores chefer (såkaldte beslutningstagere) at holde øje med det vi laver.
I de 30 år jeg programmerede har jeg ikke oplevet et eneste program der ikke kunne lukkes op. Uanset hvor rodet eller ustruktureret programmet var skrevet, kunne man altid finde den fejl man søgte eller det sted man skulle arbejde med hvis programmet skulle speedes op. Jeg har oplevet meget spaghettikode i min tid, men jeg har aldrig set et program der var så struktureret, at man i koden kunne se en kommentar som "Hej, hvis du leder efter en fejl, så er den her i denne rutine".
Uanset metode skal koden fortolkes linje for linje. Når koden ikke kommer gennem en kompiler er der begrænsede muligheder for lave maskinel optimering. Hvis du inde i et for-loop sætter en variabel til den samme værdi i hvert loop, ville en optimizer finde den og flytte den udenfor loopet, men en fortolker kan ikke. Det skal dog siges at moderne fortolkere som PHP sikkert ville finde en så relativt simpel bøf.
Jeg har set eksempler på OOP på et relativt simpelt problem der gjorde afviklingen langsommere, men jeg har osse set eksempler på det modsatte.
I min personlige liste med koderegler siger jeg at du kan lave 100 linjer kode for hver diskaccess du laver og og du kan lave 100 diskaccesser forhver netrequest du laver. Resten er sund fornuft som f.eks at flytte $var=20; udenfor loopet. Og det er uanset om du bruger procedural eller OOP.
LilleUdvikler, med mindre jeg skulle have misforstået det grundigt, så er OOP udviklet med henblik på at forbedre kodens struktur, ikke kodens hastighed/performance. OOP skulle hjælpe til at 'oversætte' komplekse problemstillinger til kode og derved medvirke til programmer af bedre kvalitet og som måske er hurtigere at skrive. Som vagnk skriver, så afhænger programmers hurtighed og 'performance' af andre ting. (Jeg har ikke 30 års programmer erfaring og kan ikke tale med om optimering.)
vagnk, du sagde, at du ville fyre et standpunkt af som måske kan give dig tæsk. Men jeg fik ikke fat på hvad dit standpunkt nu er. Kom igen, jeg er interesseret. Måske kunne du sige: "Mit standpunkt er, at .......Jeg begrunder dette standpunkt med ...." (For eksempel (men dette er et gær) "Mit standpunkt er, at det har været spild at udvikle forskellige programmeringsprog og programmeringsmåder såsom OOP og at man bør afholde sig fra at anvende moderne sprog/metoder. Jeg begrunder dette standpunkt med, at ordenligt uddannede programmører kan klare sig sig med simple midler, og at man bør overlade programmering til ordenligt uddannede programmører." ??
"...og at man bør overlade programmering til ordenligt uddannede programmører"
Tror du at fordi du er "ordentligt" uddannet så er du en fabelagtig programmør? Jeg har en lære, som er 'ordentligt' uddannet og jeg kan programmere ret meget mere PHP end han kan, fordi jeg får holdt det ved lige.
Det handler lige så meget om, at holde sin programmering ved lige, og følge med i udviklings strømmen. Hvis ikke du følger med, så skal du 'næsten' begynde all-over når du tager fat i PHP igen efter en længere pause.
----- Når det så er sagt: Er du mod at man skal bruge OOP? :-) Det synes jeg er lidt spændende at høre mere om.
Kære Christian Men jeg fik ikke fat på hvad dit standpunkt nu er. Nu lægger jeg jo ud med IMHO (In MY Humble Opinion) efterfulgt af en påstand. Jeg kan næsten ikke gøre det tydeligere, at det jeg kommer med faktisk er lidt OT.
Jeg er absolut ikke modstander af OOP. I sin tid da vi fik skærme i stedet for papir skete der ikke den store forskel i programmerings-teknikken. Det var stadig det samme output (som papir) med 80 eller 132 tegn på en linje og på den tegnbaserede skærm 24 eller 30 linjer pr. skærmside. Det store (paradigme-?)skift kom omkring '90 da vi så windows-teknikken (X-windows). Nu kunne man ikke længere kode sekventielt, men havde behov for interruptstyret event-programmering. For at styre alle de gadgets og widgets på skærmen og brugerens fuldstændig uforudsigelige måde at handle på, var der intet andet end OOP.
I dag er det som om der har bredt sig den opfattelse, at hvis man koder i OOP så er man prof og laver overskuelig kode. Jeg vil gøre opmærksom på at OOP ikke er synonymt med god programmering.
Det er min erfaring at hvis man tager fat i et program man skrev for et halvt år siden og stadig kan forstå koden og se hvad der foregår, så er koden OK. Hvis man har problemer, skal man i gang med kommentartasterne og kigge en ekstra gang på strukturen. Igennem næsten hele min karriere har jeg insisteret på at få tid efter 3-6 mdr. til en bardunopstramning. Efter den periode er der altid noget der kan gøres smartere, eller beskrives bedre, eller struktureres bedre.
Rent bortset fra at det kan være sjovt at kode OOP, men så er det jo det, der er formålet. Og det er måske svaret til LilleUdvikler!
Nu er jeg 21 år og har vel snart kodet i 10 år. Jeg har dog først for alvor bevæget mig ind i MVC/OOP inden for de seneste 3-4 år... Jeg synes det er fedt at høre fra sådan en som vagnk, der har været inden for programmering så længe! :)
Jeg vil knytte en lille kommentar: Jeg har programmeret både OOP (med tilhørence MVC-framework) sites, som performer fantastisk og jeg har også lavet procedural programming-projekter, der den dag i dag stadig kører.
Jeg vil dog sige, at fordelen i OOP ligger i, at når du skal rette til/udvide så har du en kæmpe fordel med OOP-programmeringen. Ikke dermed sagt, at det er det optimale, for det vil det i nogen situationer ikke være. Dog vil jeg sige, at hvis jeg skal begive mig ud i at kode sammen med andre på et projekt, så kan jeg næsten ikke forstå andres "ikke-OOP" kode. Det er simpelthen fordi jeg er kommet væk fra det.
Derudover vil jeg også sige, at jeg ofte støder ind i nogle sider, der er kodet i OOP fordi det skulle være smart, men hvor man har valgt at bruge foreach-i-foreach løkker, hvor det absolut kunne klares med nogle SQL-joins mv... Altså klassiske rookie fejl, der gør performancen så meget dårligere fordi man er blevet nødt til at lave et work-around pga. ens commitment til den objekt orienterede programmering.
Det jeg gerne vil frem til er: Man skal ikke vælge noget bare fordi alle de andre gør det. Man skal gøre det, der 1) passer til ens projekt - faktum er, at OOP-programmering vil kræve mere "forarbejde" inden applikationen begynder at tage for, og 2) vælg det man bedst kan overskue og lærer mest ved + føler sig bedst tilpas med. Det er som alt andet i livet - hvis man har det godt med det, man gør, og hvis man gider det, så bliver resultatet meget bedre!
Jeg ved ikke, om det overhovedet kan bruges - eller om det overhovedet er inden for topic, men hvis nogen kan bruge det, så er jeg tilfreds :o)
LilleUdvikler, mit svar er i #2, og du fik ikke andre svar. Hvis du alligevel vil dele points kan du selv oprette et svar og acceptere begge. Men kunne jeg få dig til at lukke spørgsmålet nu? Så er der ryddet op, og spørgsmålet står ikke længere som åbent i min (og andres) liste af indlæg.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.