Une partie de la réponse est la refactorisation .
Tout d'abord, commencez à écrire des tests unitaires pour vous assurer de ne rien casser accidentellement avec vos modifications. Ensuite, commencez à améliorer la conception, à supprimer les doublons, etc. par petites étapes, à exécuter vos tests unitaires après chaque étape, à résoudre les problèmes si l'un des tests échoue ou à revenir immédiatement si vous rencontrez un problème plus grave que vous ne pouvez le résoudre facilement.
L'autre partie est l' éducation .
Il faut apprendre aux gens à ne pas laisser de mauvais code derrière eux. Il s'agit certainement d'une bataille à long terme, car les habitudes et les processus de pensée sont difficiles (parfois même impossibles) à changer . Cependant, sans cela, vous continuerez simplement à obtenir une quantité infinie de mauvais codes hurlant à refactoriser.
Vous pouvez choisir de faire des révisions de code de groupe pour ouvrir une discussion sur les bonnes et les mauvaises habitudes de codage et diffuser les mérites des premières. Il ne suffit pas de dire "vous devez (pas) écrire du code comme celui-ci", vous devez convaincre les gens avec de la logique et des faits concrets. Comme "si vous avez dupliqué ce morceau de méthode sur la base de code n fois, quelles sont les chances que si un bogue est trouvé dans cette méthode, il sera corrigé dans chaque copie du code de méthode?"
Votre entreprise peut également avoir besoin de réviser les incitations et les critères d'acceptation pour les consultants - s'ils peuvent s'en tirer avec l'écriture de code bâclé, ils continueront sûrement à choisir le chemin le plus facile. Si l'entreprise continue de valoriser la «livraison rapide» sur la maintenabilité à long terme, rien ne changera :-( Vous devrez donc peut-être en discuter avec la direction également. comprendre et maintenir. Oublier le refactoring, c'est comme amasser des dettes sur votre carte de crédit. Vous pouvez vous en tirer pendant un certain temps, mais si vous ne gérez pas activement vos habitudes d'achat et vos dettes, elles s'effondreront inévitablement un jour. Dans la vie d'un projet logiciel, la faillite se produit lorsque le projet devient irréalisable: il devient plus facile de le réécrire à partir de zéro que d'ajouter une nouvelle fonctionnalité à la base de code existante. Ou les utilisateurs en ont tellement marre du niveau inférieur de support et de fonctionnalités qu'ils passent simplement à la concurrence.