Rename First, Then Extract
Renombra Primero, Luego Extrae
After diagnosis, start with the simplest change: rename. SerialDate → DayDate. getSerial() → toOrdinal(). Renaming is low-risk and immediately communicates intent. Only after renaming should you extract static utilities into separate helper functions or classes.
Después del diagnóstico, empieza con el cambio más simple: renombrar. SerialDate → DayDate. getSerial() → toOrdinal(). Renombrar es de bajo riesgo y comunica inmediatamente la intención. Solo después de renombrar debes extraer utilidades estáticas en funciones auxiliares o clases separadas.
Tests as Documentation
Las Pruebas como Documentación
Each refactoring step should produce passing tests. If a step breaks tests, it revealed a hidden dependency — a gift. Tests written during cleanup become the permanent specification of the class. By the end, the test suite describes what the class does better than any comment ever could.
Cada paso de refactorización debe producir pruebas que pasen. Si un paso rompe pruebas, reveló una dependencia oculta — un regalo. Las pruebas escritas durante la limpieza se convierten en la especificación permanente de la clase. Al final, la suite de pruebas describe lo que hace la clase mejor que cualquier comentario jamás podría.
✏️
Code Challenge
Desafío de Código
Apply rename and extract transformations to the SerialDate class.
Aplica las transformaciones de renombrar y extraer a la clase SerialDate.
💡 Key takeaway
Refactoring is not rewriting. It is a series of small, safe, behaviour-preserving transformations — each one making the code slightly more expressive.
La refactorización no es reescribir. Es una serie de transformaciones pequeñas, seguras y que preservan el comportamiento — cada una haciendo el código ligeramente más expresivo.