Hoe herken je een anti-pattern?
De negatieve gevolgen van het implementeren van anti-patterns verschilt enorm per anti-pattern. Sterker nog, de term anti-pattern is dynamisch. Hoewel er veel anti-patterns geïdentificeerd zijn; zijn er nog enorm veel niet gedocumenteerd. Dit kan het flink lastig maken om een anti-pattern te herkennen. Maar hoe weet je dan dat je er mee te maken hebt?
Gelukkig is er iets wat eigenlijk alle anti-patterns delen. De problemen die ze veroorzaken uiten zich namelijk vooral in de frequentie ervan en grootte van onderhoudswerkzaamheden die ze veroorzaken.
Kom je vaak hetzelfde probleem tegen en moet je die op meerdere plekken op dezelfde manier oplossen? Kost dat vaak veel tijd? Moet je bij kleine aanpassingen hele structuren aanpassen om het werkend te krijgen (groot onderhoud voor een klein probleem)? De kans is groot dat je (onbewust) bezig bent met symptoombestrijding van een dieper verstopt anti-pattern.
Solve it
Nu je weet hoe je een anti-pattern herkent, namelijk wanneer je veelal bezig bent met symptoombestrijding, kan je op zoek naar de veroorzaker. Let goed op welke problemen je tegenkomt en hoe vaak je daar eenzelfde probleem bij oplost. Als je eenmaal weet dat je met een anti-pattern te maken hebt, kan je hem gaan oplossen. Dat scheelt veel gedoe in tijd, frustratie en onderhoud in de toekomst.
Niet onbelangrijk: overtuig ook je collega’s en management dat dit belangrijk is om te doen. Omdat het zich uiteindelijk uit in winst (minder onderhoud = minder kosten). Heb ook de ballen om, als je zelf een anti-pattern hebt geïntroduceerd, dat recht te zetten.
Hoe je dat doet is simpel. De oplossing van het probleem zit hem al in de definitie van dat probleem, namelijk: ‘Er bestaat een andere oplossing die generiek te gebruiken is, die gedocumenteerd is en waarvan is bewezen dat hij effectief is’. Design patterns dus. Maar dan wèl op de juiste manier geïmplementeerd. Begin maar vast met refactoren.
Anti-patterns voorkomen
Elk design pattern is in essentie bedoeld om een vaker voorkomend probleem op een generieke, robuuste, solide manier op te lossen. Ze zijn clean, lean, schaalbaar en makkelijk te implementeren.
De reden dat er anti-patterns ontstaan is vaak dat we de design patterns op een verkeerde manier naar onze eigen situatie vertalen, en daarbij één of meer solid principes uit het oog verliezen. We maken er maatwerk van en daarmee geven we er vaak onze eigen (verkeerde) draai aan. Dat is het begin van je probleem, maar ook tegelijk het punt waar je toekomstige anti-patterns mee kunt voorkomen.
Zorg er dus voor dat je de solid principles uit je hoofd kent. Ze als geen ander weet te hanteren en ze toe te passen bij het implementeren van een design pattern. Zorg ervoor dat je de gedachte achter een design pattern begrijpt voordat je ‘m implementeert. Zodat je geen onnodige fouten maakt, die later bij je komen spoken in de vorm van bugs en veelvuldig onderhoud.
En last but not least: gebeurt het toch een keer, leer er dan van! Kijk waar je de mist in bent gegaan en corrigeer het. Door deze ervaringen leer je problemen met anti-patterns in de toekomst voorkomen.