
Refactoring Improving the Design of Existing Code, 2nd Edition
Martin Fowler
- Editorial
- Addison Wesley
- Año
- 2018
- Páginas
- ~448
- Nivel
- Intermedio
De qué trata
Segunda edición completamente renovada y reescrita (publicada en 2018 por Addison-Wesley) de una de las obras más influyentes en la historia de la ingeniería de software, escrita por Martin Fowler con contribuciones de Kent Beck. A diferencia de la primera edición clásica de 1999 que utilizaba Java, esta entrega adopta JavaScript moderno (ES6/ES2015+) como lenguaje vehicular para ilustrar cada técnica. El libro está orientado a desarrolladores de software, líderes técnicos y arquitectos de nivel intermedio que ya dominan la programación funcional u orientada a objetos pero necesitan métodos rigurosos y sistemáticos para reestructurar código legado o degradado sin alterar su comportamiento externo observable.
La obra profundiza en los principios económicos y prácticos del refactor continuo integrado en pipelines de integración continua (CI/CD), acompañados de un inventario detallado de más de veinte "olores en el código" (code smells como Long Function, Large Class, Primitive Obsession, Data Clumps, Feature Envy y Shotgun Surgery). A continuación, despliega un exhaustivo catálogo de refactorizaciones categorizadas paso a paso con sus motivaciones y mecánicas exactas: operaciones básicas (Extract Function, Inline Function, Extract Variable, Introduce Parameter Object, Combine Functions into Class, Combine Functions into Transform, Split Phase), encapsulación de registros y colecciones, movimiento de responsabilidades entre módulos, simplificación de condicionales (Replace Conditional with Polymorphism, Decompose Conditional) y rediseño de interfaces y jerarquías, todo respaldado por suites de pruebas automatizadas con frameworks como Mocha o Jest.
La práctica se articula en su primer capítulo a través de un proyecto guiado completo: un sistema de facturación y liquidación de créditos por volumen para una compañía teatral que representa comedias y tragedias. Fowler toma un bloque inicial de código desestructurado y lo somete a transformaciones quirúrgicas sucesivas mediante pruebas unitarias y polimorfismo hasta obtener una arquitectura modular capaz de emitir reportes en texto plano y HTML. Su valor indispensable radica en convertir el mantenimiento del código en una disciplina de ingeniería predecible y de bajo riesgo; no aborda arquitectura distribuida ni aprovisionamiento de infraestructura cloud, centrándose exclusivamente en el diseño a nivel de código fuente. Conviene tener fluidez con JavaScript moderno y nociones de testing automatizado.
- Refactorización
- Clean Code
- Code smells
- JavaScript ES6+
- Pruebas unitarias
- Diseño orientado a objetos
- Polimorfismo
- TDD
- Mantenibilidad
- Integración continua
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✓ Incluye proyectos
Proyectos
Generador de facturas para compañía teatral
Programa en JavaScript y Node.js para facturación y liquidación de créditos por funciones teatrales cómicas y dramáticas, refactorizado paso a paso desde una función monolítica hasta una arquitectura modular con polimorfismo y soporte para reportes en texto y HTML.

