Comprendre et moderniser d'anciennes bases de code avec l'IA
Le code legacy sans tests ne se réécrit pas simplement comme ça â les tests de caractĂ©risation et les petites Ă©tapes rendent la modernisation assistĂ©e par IA sĂ»re.
Ce qui rend le code legacy particulier
Le dĂ©veloppeur Michael Feathers a dĂ©fini un jour, de façon lapidaire, le code legacy comme du « code sans tests ». C'est exactement ce qui le rend dangereux Ă modifier : personne â pas mĂȘme un agent IA â ne peut vĂ©rifier si un changement casse le comportement s'il n'existe aucun test capturant ce comportement.
PremiÚre étape : capturer le comportement, pas l'améliorer
Avant de restructurer quoi que ce soit, tu as besoin de tests de caractĂ©risation. Ce sont des tests qui notent ce que le code fait MAINTENANT â mĂȘme si ça semble bizarre, voire buggĂ©. Ce n'est pas un jugement de qualitĂ©, juste un instantanĂ© qui protĂšge les changements ultĂ©rieurs.
DeuxiÚme étape : migrer progressivement
Une réécriture complĂšte est risquĂ©e : rien ne fonctionne de façon fiable tant que la nouvelle version n'est pas terminĂ©e, et un comportement ancien subtil se perd souvent en route. La migration progressive est une approche plus Ă©prouvĂ©e â un motif connu sous le nom de « figuier Ă©trangleur » (strangler fig) : de nouvelles parties poussent petit Ă petit autour de l'ancien code, jusqu'Ă ce que l'ancien puisse finalement ĂȘtre dĂ©sactivĂ©.
OĂč les agents IA sont particuliĂšrement utiles ici
Un agent peut rĂ©sumer rapidement de gros modules non documentĂ©s et proposer des tests de caractĂ©risation possibles â un travail qui coĂ»te normalement trĂšs cher en l'absence de documentation. Ce qui reste important : comprendre et sĂ©curiser d'abord, changer seulement ensuite.
EXEMPLE
Prompt : « Ce module de 1 800 lignes n'a ni tests ni doc. RĂ©sume d'abord ce qu'il fait fonctionnellement. Ăcris ensuite des tests de caractĂ©risation pour les cinq fonctions les plus importantes, qui capturent le comportement ACTUEL â mĂȘme s'il semble bizarre. Ne change encore aucun code. »
đ ïž EXERCICE â Ă TOI DE JOUER
Prends un module non testé et confus d'un de tes projets (ou d'un projet open source) et sécurise-le avec des tests de caractérisation avant de changer quoi que ce soit.
- Fais d'abord résumer par l'agent ce que le module fait fonctionnellement, sans changer de code.
- Identifie avec lui 3 à 5 entrées/appels typiques et fais écrire par l'agent des tests qui capturent les sorties actuelles comme valeur attendue.
- Seulement aprÚs : effectue un premier petit changement isolé et vérifie si les tests de caractérisation sont toujours verts.
â AUTO-VĂRIFICATION
- â Les tests couvrent-ils les chemins les plus importants, pas seulement le cas le plus simple ?
- â As-tu dĂ©libĂ©rĂ©ment capturĂ© le comportement ACTUEL, au lieu de dĂ©jĂ le « amĂ©liorer » en testant ?
- â AprĂšs le premier changement, est-ce que tout est encore vert â ou un test rouge montre-t-il exactement ce qui a changĂ© ?
QUIZ RAPIDE
Qu'est-ce qu'un test de caractérisation ?
SOURCES
- Characterization test â Wikipedia â en.wikipedia.org
- Legacy code â Wikipedia â en.wikipedia.org
- Strangler Fig Application â martinfowler.com â martinfowler.com
- Strangler Fig pattern â Microsoft Learn â learn.microsoft.com
- Legacy Seam â martinfowler.com â martinfowler.com