Cuando hemos aprendido el «dar cera pulir cera» del refactoring y nuestras funciones ya no pasan de las 20 líneas, nuestro código es semántico y limpio como una patena, entonces empezamos a ver que nuestra estructura, nuestro diseño, también necesita atención. Por tanto aplicaremos mecánicas de refactoring convergiendo a patrones bien conocidos.

Equipo Docente

Xavi Gost

Practicante y evangelista de las metodologías ágiles, que descubrió primero en el ámbito de la construcción de software con XP y más tarde en la creación de productos y startups con Lean.

Sergio Revilla (Repli)

Software Developer en HURIDOCS

Contenido del curso

Refactorizando un proyecto OpenScad, desde un IDE sin concesiones donde las mecánicas son importantes, mostrando los refactors más básicos.

Partimos de un script procedural en PHP. Separamos las responsabilidades en objetos y aprendemos buenas prácticas de implementación y repasamos refactors de movimiento de responsabilidades (move method, pull-up, etc). Código Github

Usamos una gema de Ruby con buena cobertura de test para aprender cómo detectar las colaboraciones y crear las abstracciones correspondientes. ¡Movemos mucho código!

Pasamos a Java y usamos Jodatime para ilustrar refactors a patrones de control de la creación de objetos. Singleton, Pools, Factorías.

Seguimos con Jodatime. Esta vez nos centramos en cómo buscar candidatos a refactor. Cazamos Data Clumps y refactorizamos a Value Objects.

Javascript y MathJS para mostrar cómo refactorizar a Builders y Parsers.

Usamos el código del RailsTurorial de Michael Hantl y a partir de este efectuamos una refactorización en paralelo buscando una arquitectura de servicios.

Investigamos sobre el venerable Jenkins cómo hacer refactors en bases de código de manera que tengan el mínimo impacto sin renunciar a código limpio y a una mejora del diseño de la solución.

Volvemos la vista atrás sobre un antiguo proyecto nuestro: Cuore, un framework javascript para Single Page Application. Vamos a ver cómo surgen nuevas ideas de refactor y cómo hacerlas manteniendo el flow y sin afectar a los usuarios de la librería de código.