4 min lecture • Guide 535 of 877
Gérer le Code Legacy dans les Projets Actifs
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 │
└─────────────────────────────────────────────────┘