</> CodeBooks
    ← Volver a JavaScript (página 8)
    Portada de Refactoring JavaScript

    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?

    TeóricoPráctico

    Teoría + práctica

    • ✗ Sin ejercicios
    • ✗ Sin proyectos

    Más de JavaScript con nivel Intermedio