Antipatroon

Een antipatroon (Engels: anti-pattern) is een beschrijving van een vaak voorkomend, architectonisch patroon dat is bedoeld om een specifiek probleem te verhelpen, maar achteraf een ineffectieve oplossing blijkt. In product- of systeemontwerpen uiten antipatronen zich in hoge frequentie of grote hoeveelheid onderhoudswerkzaamheden.

Het idee van een antipatroon is ontwikkeld door architect Christopher Alexander die een 'patroontaal' omschreef voor het plannen van steden en gebouwen in steden. Het antipatroon is later in de informatica gebruikt als tegenhanger van het ontwerppatroon. Binnen de informatica bestaat een grote verzameling ontwerppatronen, ontwikkeld vanuit de eerste verzameling opgesteld door de Gang of Four. Gaandeweg ontstond ook het inzicht dat er bepaalde patronen zijn die geen goed idee zijn, die wel steeds terugkomen. Deze patronen worden op een soortgelijke wijze verzameld als hun "positieve" tegenhangers.

Definitie en gebruik van antipatronen

Volgens de auteurs van Design Patterns moeten er minimaal twee sleutelelementen aanwezig zijn om onderscheid te kunnen maken tussen een werkelijk antipatroon of een slechte gewoonte, slechte praktijken of slecht idee:

  1. Een vaakgebruikt process, structuur of patroon van handelingen dat oorspronkelijk een effectief systeem lijkt, maar op termijn meer negatieve consequenties heeft.
  2. Een goed gedocumenteerde, herhaalbare en bewezen oplossing bestaat al elders

Antipatronen zijn nuttig om handelingen vroegtijdig te herkennen en problemen op termijn te voorkomen. Hiervoor bevat een ideale beschrijving de volgende elementen:

Onderkende antipatronen

Net als ontwerppatronen worden antipatronen meestal ingedeeld naar categorie.

Sociale en bedrijfsvoeringsoperaties

Organisatorisch

Software engineering

Ontwerpantipatronen

  • Abstractieinversie: een raakvlak (facet) exporteert benodigde geïmplementeerde functies niet, dus de gebruiker bouwt ze inefficiënt opnieuw boven de geëxponeerde functies. Niet: bouw van eenvoudige functies op basis van complexe functies, wat vaak wenselijk is.
  • De Godklasse: een klasse die te veel weet en te veel doet, er is geen sprake meer van een klasse die één taak uitvoert, maar hij doet allerlei verschillende taken tegelijk. Dit zorgt vaak voor veel regels code en een ondoorzichtige structuur, waardoor testen moeilijker wordt.

Programmeerantipatronen

  • Spaghetticode - code waarvan de logische paden net zo onnavolgbaar zijn als een bord spaghetti.