OOD Handboek

10SOLID en anti-patterns

PrincipeBetekenisHerkennen / toepassen
Single ResponsibilityEen klasse heeft één taak (één reden om te veranderen).Factuur met BerekenTotaal, OpslaanInDatabase én PrintAlsPdf → opsplitsen.
Open/ClosedOpen voor uitbreiding, gesloten voor wijziging.Nieuw voertuigtype = nieuwe subklasse, geen extra if/switch op type. Nieuwe logger zonder Verhuurbedrijf te wijzigen.
Liskov SubstitutionEen subklasse moet overal kunnen staan waar de ouder staat, zonder verrassingen.Vierkant als subklasse van Rechthoek breekt (breedte/hoogte niet los te zetten).
Interface SegregationEen interface bevat alleen wat voor alle implementaties geldt.Krijg je NotImplementedException of lege methodes? Splits de interface (IAanstuurbaar, IEnergieverbruiker, IAlertbaar).
Dependency InversionAfhangen van abstracties, niet van details.OrderProcessor kent INotificationService, niet EmailService.

#Anti-patterns

"Een gangbare aanpak die logisch lijkt, maar herhaaldelijk slechter uitpakt dan een bekend alternatief" (Koenig, 1995).

Anti-patternOplossing
God Class (alles in één klasse)Opsplitsen (SRP)
Golden Hammer (overal hetzelfde trucje)Passende oplossing per probleem
DRY-schending (copy-paste code)Gedeelde methode of basisklasse
Magic numbers (if (accu < 20), return -1)Benoemde const, exception i.p.v. -1
Swallowed exceptions (catch { })Loggen, afhandelen of laten doorgaan

#De vier OO-pijlers in één zin

EncapsulationData private, toegang via properties/methodes die regels bewaken.
AbstractionAlleen het essentiële tonen (abstracte klasse, interface).
InheritanceSubklasse erft van superklasse (is-een), hergebruik.
PolymorphismZelfde aanroep, eigen uitvoering per type (override).

Deze vier woorden + waar je ze in je code toepast, staan graag als commentaar boven de betreffende plek. Dat maakt je ontwerpkeuzes zichtbaar voor de lezer.