Estoy trabajando en una base de código heredada de pequeña a mediana y cuando trabajo en un ticket, encontraré un código que debería limpiarse o que necesito limpiar solo para poder entender el seguimiento de la aplicación.
Un ejemplo real es:
if( !a && b ){
doSomething1();
doSomething2();
doSomething3();
doSomething4();
doSomething5();
}else if( a ){
doSomething1();
doSomething2();
doSomething3();
doSomething4();
doSomething5();
}else if( !b && ( a || c ) ){
doSomething1();
doSomething2();
doSomething3();
doSomething4();
doSomething5();
}
Otro es corregir errores tipográficos y Engrish en comentarios y documentación en una docena de archivos fuente.
Sin embargo, a menudo esta limpieza no está relacionada con el problema principal y me pregunto cómo es mejor realizar la limpieza. A mi modo de ver, hay tres opciones:
- Antes de la solución: esto funciona cronológicamente ya que este es el orden en que ocurren, pero si rompen algo complican la solución y hace que sea más difícil diferenciar la solución con lo que estaba en producción. También introduce un commit adicional que es ruido.
- Con la solución: pero eso oculta el reemplazo real del código defectuoso con archivos donde
findGeoragphyfue correctofindGeography. - Después de la corrección: esto requiere eliminar y limpiar lo que hizo que lo ayudó a comprender el código y luego volver a probar la corrección, confirmarla y luego volver y rehacer la limpieza. Esto permite la diferencia más clara del código defectuoso, pero duplica el esfuerzo y puede conducir a confirmaciones espurias también.
tl; dr: Entonces, ¿cuál es el mejor método para confirmar el código de limpieza?
Contexto: no tenemos pruebas unitarias y el desarrollo se lleva a cabo ejecutando cambios y ocultándolos y arrojándolos por encima del muro al control de calidad para validarlos mediante correcciones de regresión manual. Además, si no hacemos algunas limpiezas de formularios, el código se vuelve ininteligible. Sé que esto está lejos de ser ideal, pero este es un verdadero desarrollo empresarial que pone comida en mi mesa y no es mi elección.