Read Before You Touch
Lee Antes de Tocar
The first step with any legacy class is diagnosis. Read the code top to bottom. List every smell. Don't fix anything yet — understanding the full picture before the first edit prevents cascading breakage. The SerialDate class from the JCommon library is a famous case study from Clean Code chapter 16.
El primer paso con cualquier clase legada es el diagnóstico. Lee el código de arriba a abajo. Lista cada mal olor. No arregles nada todavía — entender el panorama completo antes de la primera edición previene roturas en cascada. La clase SerialDate de la librería JCommon es un famoso caso de estudio del capítulo 16 de Clean Code.
Common SerialDate Smells
Malos Olores Comunes de SerialDate
Mixed abstraction levels: static utility methods alongside abstract instance methods. Primitive obsession: months stored as plain integers instead of an enum. Misleading name: "Serial" is an implementation detail, not the domain concept. Overly large class: one class doing date arithmetic, parsing, formatting, and serialisation.
Niveles de abstracción mezclados: métodos estáticos utilitarios junto a métodos de instancia abstractos. Obsesión por primitivos: meses almacenados como enteros en lugar de un enum. Nombre engañoso: "Serial" es un detalle de implementación, no el concepto del dominio. Clase excesivamente grande: una clase haciendo aritmética de fechas, análisis, formato y serialización.
✏️
Code Challenge
Desafío de Código
Name each smell before looking at the diagnosed version.
Nombra cada mal olor antes de ver la versión diagnosticada.
💡 Key takeaway
Diagnosis is a discipline. Write down every smell you observe before changing a single line — the list becomes your refactoring plan.
El diagnóstico es una disciplina. Escribe cada mal olor que observes antes de cambiar una sola línea — la lista se convierte en tu plan de refactorización.