Cualquier respuesta directa será extrema. Claramente, hay casos en los que la fecha límite es tan ajustada que debe usar un código feo, y hay casos en los que el código es tan feo que vale la pena perder el plazo para mejorarlo. Lo que necesita son métodos para juzgar en qué se encuentra, y quizás métodos para establecer plazos realistas que permitan tiempo para escribir un código mejor.
No guarde la limpieza para más tarde. A menos que habitualmente tenga períodos sin nada que hacer más que refactorizar, no hay un "posterior" en el que de alguna manera se convierta en una prioridad más alta para ordenar el código de lo que es ahora. La rutina es "rojo, verde, refactor", no "rojo, verde, hacer algo completamente diferente durante dos semanas, refactorizar". Siendo realistas, no cambiará el código hasta la próxima vez que lo vuelva a visitar por alguna otra razón, y probablemente también tendrá una fecha límite. Sus opciones reales son arreglarlo ahora o dejarlo.
Por supuesto, un código bien diseñado es mejor que un código mal diseñado, suponiendo que planee volver a leerlo. Si planea nunca volver a leerlo, no lo arregle . Envíe lo primero que pase las pruebas. Pero ese es un escenario bastante raro, para la mayoría de los programadores ocurre aproximadamente nunca. Ignorando ese caso, solo usted tiene los detalles de su caso real para juzgar cuánto cuesta arreglarlo y cuánto cuesta (en un mantenimiento futuro aumentado) no arreglarlo.
Hay ciertas cosas que no son más difíciles de arreglar en el punto en que el código requiere mantenimiento, de lo que deben arreglarse ahora. Estos no te benefician mucho para arreglar ahora. Los más obvios son triviales de corregir (errores de espacios en blanco y similares), por lo que es difícil imaginar que tenga tiempo para hacer esta pregunta, pero no para solucionarlos ;-) Para aquellos que no son triviales y son de este tipo, entonces está bien , tienes un código que no es ideal pero debes ser pragmático. Funciona y estás en una fecha límite. Úsalo.
Hay ciertas cosas que son mucho más fáciles de arreglar ahora de lo que serán más adelante cuando (a) no estén tan frescas en la mente de todos; (b) se han escrito otras cosas que se basan en ellas o las imitan. Estos son mucho más valiosos de solucionar ahora, así que priorícelos. Si no tiene tiempo en sus plazos para arreglarlos, entonces debe esforzarse al máximo para plazos más largos, porque está acumulando deudas en su base de código que probablemente tendrá que pagar la próxima vez que visite el código.
El método preferido para arreglar el código es a través de un proceso de revisión. Comente los problemas que tiene con él y envíelo al junior para que lo cambie . Puede dar ejemplos de lo que quiere decir y dejar que el junior encuentre todos los casos en el código al que se aplican, pero no solo termine su código para ellos. Si lo hace, no les dará medios para mejorar.
Debería escribir problemas comunes en una guía de estilo que diga "no haga esto, haga esto en su lugar", y explique por qué. En última instancia, se permite que la razón sea "para que nuestro código sea estéticamente coherente", pero si no está preparado para escribir sus reglas con alguna justificación, entonces probablemente tampoco debería aplicarlas. Simplemente deje a cada programador libre para elegir.
Finalmente, tenga cuidado con la tendencia a modificar las cosas indefinidamente. Los rendimientos disminuyen, y debes aprender a través de la experiencia donde todavía son buenos. Es absolutamente esencial que se forme una idea realista de lo que es lo suficientemente bueno, o de lo contrario no puede tener esa negociación en la que se asegura de que sus plazos le den tiempo para crear un código "suficientemente bueno". Dedique su tiempo a cosas que no son lo suficientemente buenas.