Después de horas encadenando cambios, corrigiendo tests y moviendo piezas, el código puede terminar como una mesa de trabajo tras montar un mueble: funciona, pero queda llena de tornillos sueltos, ...