Refactoring


Diseño con objetos

Introducción
¿Te interesa conocer y manejar correctamente refactorings más allá del rename o extract method?
¿Querés aprender a utilizar refactorings para hacer cambios de diseño realmente importantes?
¿Querés aprender cómo encadenar refactorings para lograr cambios de diseño complejos?
¡Participá de este curso y serás un experto en la utilización de refactorings automátizados!
Descripción
En este curso se ven temas complejos de mantenimiento de software y mejora de diseños, guiados principalmente por cambios automatizados (refactorings)
Se analiza el contexto histórico de la creación de Refactoring, las diferencias de implementación en distintos lenguajes e IDEs. Se analiza en detalle Refactorings que permiten modificar y testear software existente. Entre ellas se ven técnicas de diseño para romper el acoplamiento entre objetos, entre el sistema y la base de datos y entre el sistema y otros sistemas (entre otros).
Se ve como hacer cambios en el sistema aplicando Refactorings compuestos, de a pequeños pasos, para llegar a patrones de diseño y arquitectura.
Una vez tomado este curso, lo asistentes estarán capacitados para resolver problemas complejos de mantenimiento de sistemas.
El curso es ampliamente práctico con ejercicios relacionados a situaciones del trabajo cotidiano.

Temario

  • Contexto Histórico de Refactoring

  • Repaso de conceptos de buen diseño (Cohesión y Acoplamiento)

  • Problemas de Sistemas existentes (Entropía en el diseño)

  • Refactorings:

    • Extract Method/Inline Method

    • Extract Variable/Inline Variable

    • Change Method Signature

    • Introduce Parameter/Add Parameter Object/Extract Class from Parameter

    • Convert local to field/Encapsulate Field

    • Rename method/Rename Class/Rename variable

    • Move method

    • Pull up/Push down

    • Extract Class/Introduce Interface / Superclass

    • Generalize declared Type


  • Encadenamiento de Ractorings:

    • Extract Variable+Entract Method+Inline

    • Encapsulate Field+Move

    • Extract Interface+Generalize declared type

    • Extract Parameter Object + Move

    • Extract Parameter Object + Generalize Declared Type


  • Impacto del Refactoring y cómo usarlo para realizar un desarrollo incremental


Objetivos
Resultado esperado

  • Los asistentes conocerán en detalle cada uno de los refactorings vistos y cómo y cuándo aplicarlos

  • Los asistentes estarán capacitados para realizar mejoras en código existente basados en la aplicación iterativa e incremental de pequeños refactorings



Pre-Requisitos
  • Diseño Avanzado de Software con objetos II

  • Audiencia
    Arquitectos, Diseñadores, Programadores, Líderes Técnicos


    Cursos Relacionados

    Duración
    16 horas
    Lenguajes de programación
    Smalltalk - Java - .Net - Ruby - Python - ObjectiveC - Php - Swift - JavaScript