Gérer le Code Legacy dans les Projets Actifs
Travaillez efficacement avec le code legacy tout en développant de nouvelles fonctionnalités. Équilibrez maintenance, amélioration et nouveau développement dans la même codebase.
4 min de lecture
Le code legacy nécessite une manipulation soigneuse pour éviter de casser les fonctionnalités existantes tout en permettant le nouveau développement. GitScrum aide les équipes à suivre le travail lié au legacy séparément, planifier des améliorations incrémentales et maintenir une visibilité claire sur l'équilibre entre charge de maintenance et développement de fonctionnalités.
Stratégies Code Legacy
| Stratégie | Quand Utiliser | Effort |
|---|---|---|
| Ajouter tests seulement | Haut risque, modifié souvent | Faible |
| Extraire et tester | Module à préserver | Moyen |
| Wrapper et remplacer | Pattern Strangler Fig | Moyen-Élevé |
| Réécriture complète | Obsolète, inmaintenable | Élevé |
Travailler avec le Code Legacy
FRAMEWORK AMÉLIORATION CODE LEGACY
1. ÉVALUER LE CODE LEGACY
┌─────────────────────────────────────────────────┐
│ Pour chaque composant legacy, évaluez: │
│ │
│ Fréquence de Changement: │
│ ├── Haute: Modifié mensuellement → Priorité │
│ ├── Moyenne: Modifié trimestriellement → Plan │
│ └── Basse: Rarement touché → Laisser │
│ │
│ Taux de Bugs: │
│ ├── Haut: Bugs fréquents → Corriger urgent│
│ ├── Moyen: Bugs occasionnels → Améliorer │
│ └── Bas: Stable → Maintenir │
│ │
│ Couverture de Tests: │
│ ├── Aucune: Pas de tests → Ajouter tests │
│ ├── Basse: < 40% → Améliorer │
│ └── Bonne: > 70% → Maintenir │
└─────────────────────────────────────────────────┘
2. CATÉGORISER L'APPROCHE
┌─────────────────────────────────────────────────┐
│ │
│ Haute Fréquence de Changement │
│ │ │
│ ┌──────────┼──────────┐ │
│ │ WRAPPER │ EXTRAIRE │ │
│ │ ET │ ET │ │
│ │REMPLACER │ TESTER │ │
│ │ │ │ │
│ ├──────────┼──────────┤ │
│ │ DIFFÉRER │ AJOUTER │ │
│ │ (coût │ TESTS │ │
│ │ dépasse │ SEULS │ │
│ │ bénéfice)│ │ │
│ └──────────┴──────────┘ │
│ Basse Qualité │ Haute Qualité │
└─────────────────────────────────────────────────┘
La Règle du Boy Scout
PRATIQUE D'AMÉLIORATION INCRÉMENTALE
RÈGLE: Laisser le code meilleur qu'on l'a trouvé
EN TOUCHANT DU CODE LEGACY:
┌─────────────────────────────────────────────────┐
│ Avant de faire votre changement: │
│ 1. Ajouter tests pour le code à modifier │
│ 2. Vérifier que tests capturent comportement │
│ │
│ Faire votre changement: │
│ 3. Implémenter la feature/fix │
│ 4. S'assurer que tests passent encore │
│ │
│ Laisser mieux: │
│ 5. Petit refactor (renommer, extraire méthode) │
│ 6. Ajouter documentation manquante │
│ 7. Améliorer légèrement couverture tests │
│ │
│ Contrainte: Amélioration ajoute ≤30% au temps │
└─────────────────────────────────────────────────┘
EXEMPLE:
┌─────────────────────────────────────────────────┐
│ Tâche: Ajouter calcul remise à la commande │
│ Estimation: 3 heures │
│ │
│ Budget temps amélioration: ~1 heure │
│ │
│ Améliorations faites: │
│ ├── Ajouté 3 tests pour calculateTotal existant│
│ ├── Renommé variables confuses │
│ ├── Extrait logique dupliquée en helper │
│ └── Ajouté JSDoc pour méthodes publiques │
│ │
│ Résultat: Feature marche + code légèrement mieux│
└─────────────────────────────────────────────────┘
Pattern Strangler Fig
STRATÉGIE DE REMPLACEMENT GRADUEL
APPROCHE STRANGLER FIG:
┌─────────────────────────────────────────────────┐
│ Nouvelles features utilisent nouveau code │
│ Anciennes features migrent progressivement │
│ Legacy rétrécit avec le temps │
└─────────────────────────────────────────────────┘