Dit stukje sluit aan op het berichtje OOP religekkies wat ik een tijdje terug heb geblogd. Object georienteerd programmeren is al een tijd de trend in het wereldje van de softwareontwikkelaar. Waar ik o.a. tegen aan loop is dat OOP mijn aandacht verlegt van bezig zijn met het voorstel wat mijn opdrachtgever heeft gegeven naar hoe ik met de code om moet gaan. Bij OOP moet ik gaan bedenken hoe ik allerlei classes met elkaar moet laten communiceren met o.a. dependency injection, abstracties, overerving etc. naast hoe ik mijn code organiseer in bibliotheken en mappen.

OOP gaat naar mijn idee geheel voorbij aan het KIS princiepe (keep it simpel). Hoe simpeler een programma is hoe beter leesbaar en onderhoudbaar deze is. Ik ga er van uit dat u wanneer u een stuk code schrijft begrijpbare namen kiest voor variabelen en functies zodat iemand anders ook begrijpt wat uw code doet. In mijn ogen is OOP een hele slechte methodiek. Het is leuk voor wetenschappelijke studies op universiteiten.

OOP gecombineerd met TDD (test driven development) gaat helemaal fout. Met OOP bent u veel te lang bezig met mockups e.d. te maken om uw code te testen. Simpele functies en procedures zijn eenvoudiger in units te testen. Testen kost dan minder tijd. Testen zijn veel eenvoudiger te schrijven.

In de praktijk wanneer u onder tijdsdruk en een solide oplossing moet leveren is OOP een no go. Procedureel werkt dan veel beter. De volgorde van hoe uw programma werkt is eenvoudiger. En u kunt gelijksoortige functies of procedures samen prima in een bibliotheek onderbrengen om zo overzicht te houden. Procedureel programma's schrijven is sneller, simpel, met minder kans op fouten, beter leesbaar voor andere (onervaren)programmeurs, en minder kostbaar voor uw baas.

Simpel geformuleerd, een programma dat doet:  "doe stap 1", "dan stap 2", "doe dan stap 3" is vele male leesbaarder dan een programma dat doet: "maak instantie van 1 maak een factory rond stap3 en waarin stap 2 als depency is meegegeven".

OOP is een vreemde methodiek, zo denken mensen in het algemeen niet en daarom werkt het ook niet. Procedureel past veel beter bij wat uw manager of marketing afdeling graag wilt. U kunt zelf wel helemaal begaan zijn met OOP of functioneel programmeren en wat voor een methodieken die we kunnen verzinnen. Uiteindelijk gaat het om het eindproduct, een goed werkend stuk programmatuur.

Brian Will legt hier met voorbeelden uit waarom procedurele code compacter en minder complex is dan OOP code.

Kevlin Henney legt hier ook uit waarin OOP religekkies zich in verliezen (vanaf 25:15).
Kevlin heeft in zijn betoog veel goede punten, bekijk het hele filmpje!