La réponse à cette question est simple.
La cohérence est d'une importance primordiale.
mais il vient avec une mise en garde ...
Vous et votre collègue êtes probablement obsédés par le mauvais type de cohérence
Les implémentations sont jetables. Ils peuvent être complètement révisés avec plus ou moins de facilité en fonction de la qualité et de l’exhaustivité de la suite de tests. S'inquiétant de choses telles que "Devrait-il s'agir d'une propriété?", "Ce code ne devrait-il pas utiliser LINQ au lieu d'une construction de niveau inférieur?" est de valeur douteuse. Il est difficile de lier les mesures à la valeur de cohérence au niveau de la mise en œuvre. Une question bien meilleure à poser à ce niveau est "Ce code fonctionne-t-il comme annoncé?". TL: la cohérence de la mise en œuvre de la DR est le lieu où les "petits esprits" obtiennent leur hobgobelin.
Pourquoi la cohérence n'est-elle pas aussi importante ici? Les implémentations ont généralement un petit nombre de contributeurs. La plupart des méthodes sont écrites et ne sont plus jamais touchées. Parmi le code restant, le nombre de méthodes ayant deux contributeurs est presque certainement majoritaire. Ce modèle continue à l' infini . Dans ce contexte, la cohérence n’est tout simplement pas si importante. Si la durée de conservation du code est assez courte ( quelques années ), les gains d'une cohérence agressive ne sont probablement pas un facteur.
Cela ne veut pas dire que vous devriez devenir fou dans vos implémentations. C’est plutôt de dire qu’une conception simple, propre et simple aura des ordres de grandeur plus précieux pour votre futur mainteneur hypothétique que la méthode de consistance de plaque de chaudière ridicule par méthode. Cela nous amène au vrai point ...
Les API ne sont pas jetables.
Il s’agit de tous les API, au niveau du code, des services Web, des kits de développement (SDK), etc. Ceux-ci doivent obligatoirement être cohérents. Les gains de productivité de cette variété de cohérence sont énormes pour plusieurs raisons:
Tests d'intégration:
Si vous maintenez la cohérence de vos API, vous pouvez créer des suites de tests d'intégration. Ceux-ci permettent aux développeurs d'échanger librement les détails de la mise en œuvre et d'obtenir une validation immédiate. Tu veux échanger tes conneries avec LINQ? Les tests d'intégration sont-ils exécutés? Il fournit également une validation lors de la préparation de la production. Parce que les ordinateurs sont rapides, un seul ordinateur portable peut effectuer le travail de milliers de testeurs exécutant des tâches banales. Cela revient à augmenter considérablement les effectifs de votre organisation.
Productivité
Lorsque les API sont cohérentes, vous pouvez deviner comment utiliser une API en suivant ce que vous avez appris sur l’utilisation d’autres parties de l’API. En effet, l’API offre un "aspect et une convivialité" naturels et cohérents. Cela signifie que vos clients passent moins de temps à parcourir la documentation. L'intégration est plus facile et moins chère. Moins de questions sont posées aux personnes qui ont développé l'API. La cohérence fait de chacun un gagnant
Pourquoi la cohérence est-elle importante dans ce scénario? Parce que les API ont le problème exactement opposé des implémentations. Le nombre de personnes qui les utilisent est généralement beaucoup plus important que le nombre de personnes contribuant à leurs implémentations. Des gains peu élevés résultant d’une uniformité faible sont multipliés et les coûts de maintien de cette cohérence sont amortis.
Conclusion
La cohérence est chère. À première vue, il réduit la productivité. Cela contraint les développeurs et rend leur vie plus difficile. Cela impose des limites à la manière dont ils peuvent résoudre un problème, ce qui les force parfois à le résoudre de manière non optimale. C’est souvent pour des raisons qu’ils ne comprennent pas, qui sont mal conçus ou qui ne leur sont pas familiers (contrats, politiques plus larges d’organisation ou entre organisations).
Dans son exposé sur Pycon 2015, Raymond Hettinger a formulé d'excellents arguments concernant l'utilisation du guide de rédaction PEP8 pour les équipes de programmeurs python. Il a montré que l'obsession pour la cohérence stylistique d'un élément de code faisait que les réviseurs manquaient de graves problèmes de logique et de conception. Son hypothèse peut être résumée comme il est facile de trouver des incohérences stylistiques; déterminer la qualité réelle d'un morceau de code est difficile
Le point ici est d'être critique. Identifiez où la cohérence est importante et protégez-la de manière agressive. Où ce n'est pas important, ne perdez pas votre temps. Si vous ne pouvez pas fournir un moyen objectif de mesurer la valeur de la cohérence (dans les cas susmentionnés, "effectif effectif", coût en fonction de la productivité) et que vous ne pouvez pas démontrer que les rendements sont substantiels, alors vous ne faites probablement pas du bien à ton organisation.