** La convention sur la configuration (COC) est un paradigme de conception de logiciels qui vise à simplifier le développement en utilisant des hypothèses et des normes prédéfinies, en réduisant le nombre de décisions que les développeurs doivent prendre. Bien que le COC puisse améliorer la productivité et la cohérence, il existe des scénarios où il pourrait échouer ou être moins efficace:
1. Manque de flexibilité **
L'une des principales critiques du COC est son potentiel pour limiter la flexibilité. Dans les environnements où des solutions uniques ou non standard sont nécessaires, l'adhésion strictement aux conventions peut être restrictive. Par exemple, si un projet nécessite un schéma de base de données qui ne suit pas les conventions de dénomination conventionnelles, une configuration supplémentaire est nécessaire, ce qui peut compenser les avantages du COC [5] [4].
2. Confort avec d'autres principes de conception **
Le COC peut parfois entrer en conflit avec d'autres principes de conception, tels que le principe "explicite est meilleur que le principe implicite" du zen de Python. Ce principe suggère que les configurations explicites sont préférables à des hypothèses implicites, ce qui peut entraîner une confusion ou un comportement inattendu s'il n'est pas bien documenté [9] [4].
3. Complexité dans les scénarios non standard **
Lorsque vous traitez avec des scénarios complexes ou non standard, COC peut ne pas fournir la flexibilité nécessaire pour gérer efficacement les exigences uniques. Par exemple, dans un système où plusieurs bases de données avec différentes structures de schéma doivent être intégrées, le fait de s'appuyer uniquement sur les conventions pourrait entraîner des inefficacités ou une complexité supplémentaire [4] [10].
4. Courbe d'apprentissage et adoption **
La mise en œuvre du COC nécessite un certain niveau de familiarité avec les conventions elles-mêmes. Les nouveaux développeurs pourraient trouver difficile d'apprendre et de s'adapter à ces conventions, surtout s'ils sont habitués à des méthodes de configuration plus explicites. Cela peut augmenter la courbe d'apprentissage et potentiellement entraver la productivité pour les nouveaux membres de l'équipe [1] [4].
5. Hypothèses et documents implicites **
COC s'appuie fortement sur des hypothèses implicites basées sur des conventions établies. Si ces hypothèses ne sont pas bien documentées ou comprises, cela peut entraîner des malentendus ou des erreurs. Les développeurs doivent avoir une compréhension approfondie des conventions pour les utiliser efficacement, ce qui peut être un obstacle dans des environnements collaboratifs [10] [8].
6. Rendre la mise en valeur des défauts **
Dans certains cas, les développeurs pourraient compter trop sur les valeurs par défaut fournies par COC sans comprendre pleinement les hypothèses sous-jacentes. Cela peut conduire à un comportement inattendu si les valeurs par défaut ne s'alignent pas avec les besoins spécifiques du projet. Par exemple, si un framework suppose une certaine structure de base de données par défaut, mais la structure réelle est différente, une configuration supplémentaire est requise pour remplacer ces défauts [4] [11].
En résumé, bien que la convention sur la configuration offre de nombreux avantages en termes de productivité et de cohérence, il peut échouer ou être moins efficace dans les scénarios nécessitant une flexibilité élevée, des configurations complexes ou lorsqu'il existe un manque de compréhension des conventions sous-jacentes.
Citations:[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--wby-on-wails.html
[6] http://softwareensineering.vazexqi.com/files/pattern.html
[7] https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/februy/patterns-in-practice-convention-over-configuration
[8] https://devopedia.org/convention-over-configuration
[9] https://softwareensineering.stackexchange.com/questions/165649/is-convention-over-configuration-not-violating-basic-programming-prinpiles
[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/