
Refactoring JavaScript
Evan Burchard
- Editorial
- O'Reilly
- Año
- 2017
- Páginas
- ~442
- Nivel
- Intermedio
De qué trata
Guía de Evan Burchard para convertir código JavaScript de mala calidad en código claro y mantenible sin reescribirlo desde cero, mediante técnicas de refactorización repetibles y respaldadas por tests. Se publicó en 2017 y usa JavaScript moderno (ES2015+: let/const, funciones flecha, clases, plantillas de texto, Set y Map, promesas), aunque dedica un capítulo a ayudar al lector a situarse entre versiones, plataformas, lenguajes que compilan a JavaScript y frameworks. Está pensado para desarrolladores intermedios que ya dominan el lenguaje y trabajan con código heredado o en equipo. No es adecuado para principiantes.
Los primeros capítulos definen qué es refactorizar (cambiar la estructura sin cambiar el comportamiento) y dan mucho peso al testing. Recorren los tipos de pruebas (manuales, de aprobación, de extremo a extremo, unitarias y no funcionales), procesos como las guías de estilo, la programación en pareja, la revisión de código y el TDD, y las categorías de herramientas: frameworks de test, librerías de aserciones, mocks y stubs, cobertura, linters e integración continua. También muestran casos prácticos: código nuevo con y sin TDD, tests de caracterización para código sin pruebas y tests de regresión al depurar. Después se aplican refactorizaciones concretas: renombrar, eliminar código muerto y especulativo, números mágicos, variables, cadenas y expresiones regulares, bucles frente a forEach y map, extracción de funciones, agrupar el estado global en un objeto, constructores frente a fábricas y clases, y jerarquías de herencia con sus antipatrones. Le siguen los patrones de diseño clásicos (Template Method, Strategy, State, Null Object, Decorator, Adapter y Facade), el código asíncrono (salir del «pyramid of doom», callbacks y promesas con sus tests) y la refactorización funcional: inmutabilidad, transparencia referencial, currying y composición con Ramda, y los tipos Maybe y Either con la librería Sanctuary.
Gran parte del libro gira en torno a un ejemplo continuo, un clasificador bayesiano ingenuo de canciones, que se refactoriza primero hacia un diseño orientado a objetos y luego hacia uno funcional. Así se ve la evolución completa de un mismo código. Su punto fuerte es la disciplina de «primero tests, luego cambios» y la comparación honesta entre los estilos OOP y funcional. Las reseñas señalan que algunos ejemplos son largos y densos, que no profundiza en el funcionamiento interno de las promesas y que no cubre async/await, posterior a su redacción. Conviene llegar con soltura en JavaScript y algo de experiencia escribiendo tests.
- Refactorización
- Testing
- TDD
- Tests de caracterización
- Código heredado
- Funciones y objetos
- Herencia y clases
- Patrones de diseño
- Promesas y asincronía
- Programación funcional
- Ramda
- Sanctuary
¿Cómo enseña?
Teoría + práctica
- ✗ Sin ejercicios
- ✗ Sin proyectos

