Legacy Code Gets Worse With Age
Le code legacy ne s'améliore pas avec le temps. Il empire.
La semaine dernière, j'ai passé trois heures à corriger un bug. Cela aurait dû me prendre 20 minutes. Le problème venait d'un module de validation de 2019. Tout le monde l'ignorait parce que « ça fonctionne ». Ce n'était pas le cas. J'ai trouvé un commentaire TODO de 2020 à l'intérieur du fichier.
Beaucoup de gens traitent le code legacy comme une dette optionnelle. Ils pensent pouvoir la rembourser quand ils auront le temps. Le code legacy ressemble plutôt à de la moisissure. Elle se propage. Elle contamine d'autres parties de votre système. Plus vous l'ignorez, plus il devient coûteux de le nettoyer.
Cela crée un cercle vicieux :
- Vous héritez d'un projet désordonné.
- Vous ajoutez une condition if supplémentaire pour faire fonctionner votre fonctionnalité.
- Six mois plus tard, quelqu'un d'autre fait la même chose.
- Un an plus tard, le fichier fait 800 lignes et n'a aucun test.
Ce code « fonctionnel » comporte des coûts cachés :
- La vitesse de développement chute. Vous passez plus de temps à lire le contexte qu'à écrire du code.
- Les bugs augmentent. Corriger une chose en casse une autre.
- L'onboarding devient difficile. Les nouveaux développeurs peinent à comprendre pourquoi la logique est dupliquée partout.
Surveillez ces signaux d'alerte :
- Des commentaires inutiles ou mensongers.
- De la logique métier dupliquée dans différents fichiers.
- Des dépendances circulaires et un couplage élevé.
N'essayez pas de tout réécrire. Les réécritures complètes échouent dans 80 % des cas. Vous passez des mois à reconstruire ce qui existe déjà pendant que l'entreprise attend de nouvelles fonctionnalités.
Utilisez le refactoring incrémental avec des tests de caractérisation :
- Capturez le comportement actuel avec des tests, même s'il est étrange.
- Refactorez sans changer ce comportement.
- Répétez l'opération jusqu'à ce que le code soit lisible.
- Ce n'est qu'ensuite que vous modifiez le comportement avec de vrais tests.
Suivez ces règles pour éviter les pièges :
- Ne refactorez jamais sans tests.
- Ne changez pas le comportement pendant un refactoring. Un bug pourrait être une fonctionnalité non documentée sur laquelle un client s'appuie.
- Laissez tranquille le code qui ne bouge pas. Si un module n'a pas changé depuis trois ans et ne pose aucun problème, laissez-le tel quel.
Concentrez votre énergie sur le code que vous touchez fréquemment.
Source: https://dev.to/taina_costa_f/legacy-code-nao-envelhece-como-vinho-quanto-mais-espera-pior-fica-132h
