La refactorización, como cualquier otra actividad, debe tener un objetivo claro definido para ello. Una vez que ese objetivo esté claro, consideraría el estado actual del proyecto y la etapa del ciclo de vida. Para un proyecto de desarrollo con un 80% de avance, un 30% de retraso, debe justificar el esfuerzo de refactorización según el objetivo establecido anteriormente. En este ejemplo, si las piezas de código se probaron unitariamente y funcionan bien en un entorno de desarrollo, es difícil justificar la refactorización.
El hecho de que hayan quedado 40 desarrolladores puede no ser tan dramático como parece. Esperaría que esos desarrolladores hayan entregado código de trabajo que fue revisado y probado. Entonces, a menos que haya problemas conocidos en este código, lo dejaría como está. La idea es que en un proyecto grande como el suyo, esperaría que hubiera estándares y procedimientos y que el código no sea un completo desastre.
Recuerde que la refactorización hará que se repitan muchas, si no todas, las pruebas realizadas. Además, dado que la refactorización de este tamaño no puede ser realizada por uno o dos miembros principales, la refactorización puede presentar problemas que no existían. Este es un riesgo que no debe ser descuidado.
Dicho esto, no es inusual agregar tareas a un proyecto cuando sucede lo imprevisto. Entonces, si los desarrolladores desaparecieron por alguna razón, eso se consideraría un evento de naturaleza especial y se deben tomar todas las medidas para remediar la situación. Sería tratado como un incendio o un terremoto, etc.
En resumen, no refactorizaría un código de trabajo grande en un proyecto grande sin una buena razón técnica sólida, especialmente porque todos sabemos que la mayoría de los proyectos suelen estar en estado tardío.