Curso de Refactoring 100% práctico

Domina el cambio del código de las aplicaciones mediante el conjunto de técnicas de las metodologías ágiles llamada "Refactoring".
Inscripciones abiertas
Intermedio
8 Clases 14 h (aprox.)
99€
85€
Precio en promoción

Inicio del curso

Lunes 16 de junio

Añadir a Google Calendar

Dentro de las muchas técnicas que han aportado las metodologías ágiles una de las más útiles y recomendables es el "Refactoring". Consiste en cambiar el código de las aplicaciones en micropasos, sin alterar su funcionamiento, con el objetivo de mejorar el diseño del software. 

Es una práctica que hace que el conjunto de métodos ágiles encaje perfectamente y tenga como resultado una mejora siempre deseable de la calidad del software. Pero para conseguirlo es importante mantener un enfoque adecuado, dirigido por otras prácticas como las pruebas y el TDD, así como saber en qué situaciones podemos mejorar el diseño del software para hacerlo más entendible, mantenible y robusto.

Qué aprenderé en el Curso de Refactoring 100% práctico

  • Entender qué es refactoring y por qué es clave en el desarrollo.
  • Identificar code smells y oportunidades de mejora en código existente.
  • Aplicar patrones de refactoring comunes de forma segura y controlada.
  • Usar tests automatizados como red de seguridad para refactorizar.
  • Diferenciar entre mejora de código estética y mejora estructural real.
  • Incorporar refactoring al flujo de trabajo diario sin afectar la entrega de valor.
  • Abordar proyectos legacy con técnicas para "ganarse el derecho a refactorizar".
  • Tener un material para seguir un roadmap de prácticas propias con las que avanzar tras el curso.

Objetivos del curso

A través de un enfoque 100% práctico y centrado en ejemplos reales, exploraremos cómo transformar código desorganizado, repetitivo o difícil de entender en sistemas más limpios, mantenibles y robustos.

Inspirado en el material clásico, sobre todo el libro Refactoring de Martin Fowler, y complementado con conceptos de Working Effectively with Legacy Code de Michael Feathers, este curso ofrece una guía paso a paso para incorporar el refactoring como una habilidad cotidiana, independientemente del tipo de proyecto en que trabajes. Desde renombrar variables hasta reestructurar sistemas enteros, el curso busca no solo enseñar técnicas, sino también fomentar un criterio técnico sólido para decidir cuándo y por qué aplicar cada una.

Por qué debes aprender refactoring

La entrega continua de software se ha vuelto la norma y necesidad técnica de las empresas, por lo que mantener la facilidad de cambiar el código ya no es una opción. El refactoring es una de las habilidades más importantes y subestimadas del desarrollo profesional. Saber refactorizar es una de esas pocas habilidades que decantan la balanza entre dos personas profesionales del sector.

El refactoring también es fundamental porque en el día a día de nuestro trabajo es inevitable que heredemos código que no fue escrito con los principios que querríamos, ni con el conocimiento actual que la empresa tiene sobre su dominio. Enfrentar el código legacy sin herramientas adecuadas puede ser frustrante o arriesgado, además de lento. Así que en este curso aprenderás tambien a refactorizar código legacy sin romperlo, una ventaja competitiva enorme para cualquier profesional de la industria del software en la actualidad.

El curso práctico de Refactoring no es un curso de testing ni de diseño de software, pero sí que gira en torno a los fundamentos necesarios para usarlos en contexto de refactoring. Por lo tanto, servirá también como práctica para seguir madurando los conocimientos de estas áreas, buscando una creciente mejora del valor de los estudiantes como desarrolladores.

Qué tengo que saber

Conocimientos previos necesarios:

  • Familiaridad mínima con al menos un lenguaje de programación orientado a objetos (C#, Java, Python, JavaScript con clases, etc.).
  • Capacidad para leer y escribir código en dicho lenguaje.
  • Entender estructuras básicas como clases, métodos, condicionales, bucles y colecciones.
  • Haber trabajado con funciones o métodos en algún proyecto, aunque sea pequeño.
  • Opcional pero recomendable: nociones básicas sobre testing automatizado.

Tecnologías utilizadas en el curso:

  • Los ejemplos principales estarán escritos en C#, aunque se explicarán de forma que sean totalmente transferibles a otros lenguajes OOP y entendibles. No se usarán casi nunca detalles propios del lenguaje.

  • Herramientas o entornos comunes como:

    • IDE con soporte para refactoring: se usará Rider pero se entenderá perfectamente si solo se ha usado Visual Studio, Visual Studio Code, etc.
    • Algún framework o librería de testing: xUnit, NUnit, MSTest o equivalente en otro lenguaje.
    • Git para versionar y entender cambios si se desea practicar de forma más completa.

Clases y contenidos

Refactoring
  • ¿Qué es refactoring?
  • Historia y evolución del refactoring.
  • Por qué importa: mantenibilidad, rapidez, calidad interna y deuda técnica.
  • Código legacy vs código mantenible vs código bonito.
  • Refactoring vs. reescritura.
  • El rol del testing en el refactoring.
Añadir a Google Calendar
¿Qué refactorizar? Code Smells
  • ¿Qué son los code smells?
  • Diferencia entre code smell y código incorrecto.
  • Papel de los code smells en el refactoring.
  • Clasificación y catálogo de code smells.
Añadir a Google Calendar
Refactorings estructurales
  • Refactorings estructurales (Basado en Fowler, Capítulos 1–3)
  • Renombrados y casos problemáticos según el IDE que usemos.
  • Extracciones e inlinings.
  • Movimientos y encapsulaciones.
Añadir a Google Calendar
Refactorings de orientación a objetos
  • Refactorings de orientación a objetos (Fowler, Capítulos 4–6)
  • Reemplazar condicional por polimorfismo.
  • Introducir objeto de parámetro.
  • Dividir responsabilidad de clase.
Añadir a Google Calendar
Refactorings arquitectónicos
  • Refactorings arquitectónicos (Fowler, Capítulos 7–9)
  • Cambios de arquitectura interna.
  • Separar capas, reorganizar módulos.
  • Refactoring en sistemas distribuidos.
  • Mención a los microservicios.
Añadir a Google Calendar
Introducción al código legacy
  • ¿Qué es código legacy realmente? ¿Qué lo diferencia de la deuda técnica?
  • El miedo a cambiar código viejo. “Trauma-driven development”.
  • El refactoring como hábito y herramienta de entendimiento de código.
  • Cómo empezar a refactorizar sin romper nada: characterization tests.
  • Varias técnicas de test de caracterización.
Añadir a Google Calendar
Refactoring de código legacy

Introducir seams para permitir testeo: método, clase, preprocesador… Técnicas para romper dependencias. Identificación de casos donde el código legacy impide refactorizar.

Añadir a Google Calendar
Refactoring incremental, IA y vibe coding
  • Trabajar de forma incremental.
  • Refactorizar sin full coverage: safe spots, inyección controlada, etc..
  • Diagnóstico rápido de riesgos.
  • Recapitulación sobre el papel del TDD.
  • El papel del refactoring en la IA generativa y el vibe coding.
  • Próximos pasos para profundizar en refactoring.
Añadir a Google Calendar
¿Conoces nuestra tarifa plana?

Toda la formación de EscuelaIT, con más de 200 cursos completos para aprender las más variadas tecnologías de programación, diseño y marketing online. Todo! con tu suscripción.

Suscríbete