La refactorisation, comme toute autre activité, doit avoir un objectif clair défini pour elle. Une fois cet objectif clairement défini, vous devriez considérer l'état actuel du projet et l'étape du cycle de vie. Pour un projet de développement achevé à 80%, avec 30% de retard, vous devez justifier l'effort de refactoring en fonction de l'objectif fixé précédemment. Dans cet exemple, si les éléments de code ont été testés à l'unité et fonctionnent correctement dans un environnement de développement, il est difficile de justifier la refactorisation.
Le fait que 40 développeurs soient partis n'est peut-être pas aussi dramatique que cela puisse paraître. Je m'attends à ce que ces développeurs aient livré du code de travail qui a été examiné et testé. Donc, à moins qu'il n'y ait des problèmes connus dans ce code, je le laisserais tel quel. L'idée est que dans un grand projet comme le vôtre, je m'attendrais à ce qu'il y ait des normes et des procédures et que le code ne soit pas un gâchis complet.
N'oubliez pas que le refactoring entraînera la répétition de nombreux, sinon tous les tests effectués. De plus, comme le refactoring de cette taille ne peut pas être effectué par un ou deux membres seniors, le refactoring peut introduire des problèmes qui n'existaient pas. C'est un risque à ne pas négliger.
Cela dit, il n'est pas rare d'ajouter des tâches à un projet lorsque l'imprévu se produit. Donc, si les développeurs disparaissaient pour une raison quelconque, cela serait considéré comme un événement de nature spéciale et quelles que soient les mesures à prendre pour remédier à la situation. Il serait traité comme un incendie ou un tremblement de terre, etc.
En résumé, je ne refactoriserais pas un grand code de travail dans un grand projet sans bonne raison technique solide, surtout que nous savons tous que la plupart des projets sont généralement en retard.