** Conventie over Configuration (COC) is een paradigma voor het ontwerpen van software dat de ontwikkeling beoogt door vooraf gedefinieerde veronderstellingen en normen te gebruiken, waardoor het aantal beslissingen dat ontwikkelaars moet nemen, moet worden verminderd. Hoewel COC de productiviteit en consistentie kan verbeteren, zijn er scenario's waar het mogelijk faalt of minder effectief is:
1. Gebrek aan flexibiliteit **
Een van de belangrijkste kritiek op COC is het potentieel om de flexibiliteit te beperken. In omgevingen waar unieke of niet-standaard oplossingen vereist zijn, kan strikt vasthouden aan conventies beperkend zijn. Als een project bijvoorbeeld een databaseschema vereist dat niet de conventionele naamgevingsconventies volgt, is extra configuratie nodig, die de voordelen van COC [5] [4] kan compenseren.
2. conflicten met andere ontwerpprincipes **
COC kan soms in strijd zijn met andere ontwerpprincipes, zoals het "expliciete is beter dan impliciet" principe van de Zen van Python. Dit principe suggereert dat expliciete configuraties de voorkeur hebben boven impliciete veronderstellingen, wat kan leiden tot verwarring of onverwacht gedrag, indien niet goed gedocumenteerd [9] [4].
3. Complexiteit in niet-standaard scenario's **
Bij het omgaan met complexe of niet-standaard scenario's biedt COC mogelijk niet de nodige flexibiliteit om unieke vereisten efficiënt te verwerken. In een systeem waarbij meerdere databases met verschillende schemastructuren bijvoorbeeld moeten worden geïntegreerd, kan het uitsluitend op conventies vertrouwen tot inefficiënties of extra complexiteit [4] [10] leiden.
4. Leercurve en adoptie **
Het implementeren van COC vereist een bepaald niveau van bekendheid met de conventies zelf. Nieuwe ontwikkelaars vinden het misschien een uitdaging om te leren en zich aan te passen aan deze conventies, vooral als ze gewend zijn aan meer expliciete configuratiemethoden. Dit kan de leercurve verhogen en mogelijk de productiviteit belemmeren voor nieuwe teamleden [1] [4].
5. Impliciete veronderstellingen en documentatie **
COC is sterk afhankelijk van impliciete veronderstellingen op basis van gevestigde conventies. Als deze veronderstellingen niet goed zijn gedocumenteerd of begrepen, kan dit leiden tot misverstanden of fouten. Ontwikkelaars moeten een diep inzicht hebben in de conventies om ze effectief te gebruiken, wat een barrière kan zijn in samenwerkingsomgevingen [10] [8].
6. Overvallen op standaardwaarden **
In sommige gevallen kunnen ontwikkelaars te zwaar vertrouwen op de standaardinstellingen die door COC worden verstrekt zonder de onderliggende veronderstellingen volledig te begrijpen. Dit kan leiden tot onverwacht gedrag als de standaardwaarden niet aansluiten bij de specifieke behoeften van het project. Als een framework bijvoorbeeld standaard een bepaalde databasestructuur aanneemt, maar de werkelijke structuur anders is, is extra configuratie vereist om deze standaardwaarden te negeren [4] [11].
Samenvattend, hoewel Convention Over Configuration veel voordelen biedt in termen van productiviteit en consistentie, kan het falen of minder effectief zijn in scenario's die een hoge flexibiliteit, complexe configuraties vereisen of wanneer er een gebrek aan begrip is van de onderliggende conventies.
Citaten:[1] https://facilethings.com/blog/en/convention-over-configuration
[2] https://www.reddit.com/r/rails/comments/a68d7i/im_terrified_of_convention_over_configuration/
[3] https://www.devx.com/terms/convention-over-configuration/
[4] https://en.wikipedia.org/wiki/convention_over_configuration
[5] https://www.aspireedge.com/the-impact-of-convention-over-configuration-in-ruby-on-rails.html
[6] http://softwareGineering.vazexqi.com/files/pattern.html
[7] https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/february/patterns-in-practice-convention-over-configuration
[8] https://devopedia.org/convention-over-configuration
[9] https://softwareEngineering.stacKexchange.com/questions/165649/is-convention-over-configuration-not-violating-basic-programming-principes
[10] https://techblog.bozho.net/a-problem-with-convention-over-configuration/
[11] https://stackoverflow.com/questions/71985512/convention-over-configuration-in-rails
[12] https://davewentzel.com/content/convention-over-configuration/