Absolutamente.
La refactorización se debe hacer en un proyecto que funcione y que "pase". Cuando pasan todas sus pruebas (en los niveles de unidad, sistema y aceptación), sabe que su producto cumple con los requisitos. Cuando refactoriza, puede continuar confirmando que todas las pruebas continúan pasando. Si alguna prueba comienza a fallar, entonces hizo algo mal y necesita corregirlo. Si tiene pruebas fallidas, debe corregirlas antes de refactorizar para que siempre pueda asegurarse de que su refactorización no cambie la funcionalidad del sistema.
Este es también un momento perfecto para la refactorización, suponiendo que tenga el tiempo y los recursos para llevar a cabo la refactorización y aún así cumplir con el tiempo y el presupuesto. Refactorizar ahora facilitará la comprensión y el mantenimiento de su sistema, por lo que a medida que agrega más funciones nuevas, se vuelve más fácil. Debes luchar contra la descomposición del código y la entropía del software .
Como Joel Etherton señala en los comentarios, debe administrar el alcance de la refactorización. Concéntrese en refactorizar las partes del sistema a las que pronto agregará características, realizando refactorizaciones que facilitarán el trabajo o la adición de las nuevas características. El uso de análisis estático, herramientas de métricas y revisiones de código puede ayudarlo a identificar las áreas más críticas. No querrá perder los plazos porque estaba refactorizando, aún debe continuar agregando valor al cliente.
Usted menciona que el cliente no ve valor en la refactorización. Por lo general, al cliente no le importa la calidad del código, sino el producto. La refactorización le facilitará mantener una alta calidad del producto y seguir entregando un producto que satisfaga las necesidades cambiantes del cliente. Intente negociar el tiempo para refactorizar en su programación (el cliente quiere funciones X en días Y, intente ver si no puede obtener días Y + Z o funciones XN para poder dedicar tiempo al diseño, refactorización e implementación), si lata.