Je pense que vous allez trop loin dans le principe de la répétition du code. Pensez au point d'éviter la répétition de code. Le but est de réduire la quantité de code qui doit être vérifiée en cas de changement de logique et d'augmenter la compréhension en factorisant des blocs visiblement similaires.
Les inconvénients de la factorisation afin d'éviter la répétition sont que si l'un des blocs partagés doit changer, vous avez maintenant besoin d'un héritage encore plus complexe ou d'une commutation entre l'implémentation standard et non standard.
Donc, pesez soigneusement la possibilité que la logique d'un seul de ces blocs change sans les autres par rapport aux avantages de compréhension obtenus en éliminant cette similitude. Si une implémentation pouvait se séparer des autres, il serait peut-être préférable de simplement répéter le code.
Tout en conservant ce code répété, à mesure qu'il devient plus complexe et que votre domaine problématique devient plus défini, vous pouvez alors trouver plus approprié de factoriser les sections répétées, désormais plus complexes, mais aussi plus définies.
J'essaie généralement de maintenir la même nature de l'éditeur de texte pendant un certain temps jusqu'à ce que je puisse voir si quelque chose qui semble répétitif s'avère utile. Je garde juste la répétition, mais je garde un œil sur l'avenir de ce bloc en le gardant textuellement facile à faire correspondre plus tard.
La plupart du temps, la même nature et l'éventuel affacturage commencent à se dissiper, en tant que règles commerciales réelles et capricieuses et en une logique très dépendante, souvent arbitraire; comme traiter les bizarreries de plusieurs implémentations de base de données courantes (ANSI_NULLS ou quelques-unes de celles-ci viennent à l'esprit) sont ajoutées; forçant ce qui semblait être une pure logique dans un gâchis tordu, essayant de fournir une logique de décision raisonnable et défendable face au désordre de l'état de l'industrie.
Il me semble que si les gens essayaient de prendre en compte ce que vous essayez de prendre en compte, nous aurions une bibliothèque entière de constructions sans valeur comme Do1Then2If2False Do1IfTrueDo2.
Il doit être plus complexe et plus clair que le bloc ne va pas changer pour justifier sa prise en compte.
C'est un logiciel . Vous pouvez revenir en arrière et modifier quelques blocs qui sont les mêmes en ce moment. Cela prendra 5 minutes. Et vous pouvez économiser des heures de perte d'affacturage, puis des heures supplémentaires d'héritage et de développement de commutation, simplement en le laissant et en vous assurant d'avoir un bon clavier anti-RSI.