Le refactoring (ou refactorisation) est une pratique de développement qui consiste à modifier la structure interne du code sans en changer le comportement observable. L'objectif est d'améliorer la lisibilité, la maintenabilité et l'évolutivité du code sans introduire de régression fonctionnelle.
Le refactoring n'est pas une fin en soi : c'est un outil de gestion de la dette technique. Un code qui n'est jamais refactoré accumule de la complexité accidentelle — des couches de logique ajoutées au fil du temps qui rendent chaque évolution plus lente et plus risquée. Le refactoring progressif (améliorer chaque fichier touché, selon la règle du boy scout) est la stratégie la plus efficace pour maintenir un code base sain sans bloquer les développements.
Les opérations de refactoring les plus courantes incluent : le renommage (variables, méthodes, classes), l'extraction de méthodes ou de classes, la simplification de conditions complexes, l'élimination du code dupliqué et la séparation des responsabilités. Un refactoring fiable s'appuie toujours sur une suite de tests automatisés qui garantit l'absence de régression.