Citat:
Ursprungligen postat av seb-
http://en.wikipedia.org/wiki/Object-...ed_programming
Trodde det var ganska mainstream i dag att OOP är något som är det som gäller för 2000-talets programmering (i synnerhet med .NET ramverkets frammarsch) i de allra flesta fallen (kanske bortsett från viss spel- och hårdvaruutveckling). Objektorienterad kod är i praktiken mer läsbar, begriplig och lättförstådd om den nu förstås är skriven på ett snyggt sätt och läsaren förstår objektorienterad programmering. Med funktionsorienterad kod blir det inte lika lätt att återanvända kod eller skapa logiska relationer mellan olika kodstycken eller kodbitar; i stället blir det en massa copy & paste vilket försvårar underhållet. Vidare är det inte lika lätt att skriva abstrakt kod vilket underlättar för framtidsscenarion då produkten vidareutvecklas och utökas med ny funktionalitet och enhetstestning blir förstås nästintill omöjlig utan relativt små, löskopplade komponenter. Om man nu ens
kan enhetstesta funktionsorienterad kod, d.v.s...
Och när du nämner "strukturerad och prydlig" funktionsorienterad kod och "fullständigt obegriplig och rörig" objektorienterad kod - kan du visa mig kodexempel på vad det är du avser?
De flesta riktigt stora Open Source-projekt är skrivna i C (som bekant inte är ett OO-språk). För att bara nämna några: GCC, Apache HTTP Server, Python, X.Org Server
Problemet med OO är att man som utvecklare oftast överdesignar systemen. Välskriven OO-kod är per definition också "super generell", vilket kostar extra tid och arbete att implementera (och därmed blir kontraproduktiv).
En "Windows"-klass känns inte komplett om man inte kan ändra om storlek, position, transparens, Z-ordning, m.fl. Men kanske kommer man under hela projektets gång egentligen enbart att använda sig av "setPosition" och "getPosition"?
Alltför ofta gör OO att man försöker att designa sina objekt inför framtida krav. Och ärligt talat; hur många här brukar ta stora OO-komponenter från gammal kod in till nya projekt?
De flesta argumenten för OO passar minst lika bra in på att enbart skriva modulärt (vilket man gör i alla stora C-projekt). Det är sällan OO per sig (d.v.s. att man sätter objekt i fokus) som ger en kod av högre kvalitet.
Det enda undantaget som jag kan komma på och som där OO definitivt har sin plats är GUI-relaterad kod.