Introducción
  • Introducción : definición - motivación - contextualización.
  • Conceptos de refactoring
  • Instalación de herramientas de desarrollo: Java 1.8 y Eclipse Luna
  • Instalación de distribución de códigos de ejemplo Java mediante Gits y pruebas
  • Catálogo de refactorizaciones
  • Catálogo de refactorizaciones: Eclipse y Fowler ( http://refactoring.com/)
Catálogo de refactorizaciones básicas de Eclipse
  • Move Method. Cuándo y cómo se aplica la refactorización con Eclipse
  • Rename. Cuándo y cómo se aplica la refactorización con con Eclipse.
  • Extract Method e Inline Method. Cuándo y cómo se aplican con Eclipse
  • Extract e Inline Constants. Cuándo y cómo se aplican con Eclipse.
  • Conocer como Eclipse aplica refactorizaciones básicas: Rename, Extract, Move...
Proceso de refactoring
  • Presentación refactorización mini_proyecto Java de VideoClub
  • Cargando el proyecto en Eclipse y comprendiendo su código
  • Refactorizar para añadir nueva funcionalidad. Generar informe en html (I)
  • Refactorizar para añadir nueva funcionalidad. Generar informe en html (II)
  • Nuevas tareas de mantenimiento. Comprensión de código mediante diagramas UML.
  • Evolución del código y refactorización en GitHub
Catálogo de refactorizaciones (ii)
  • Encapsulate Field. Cuándo y cómo se aplican con Eclipse
  • Refactorizaciones de herencia. Push down, Pull Up, Extract Interface.
  • Refactorizaciones con clases anónimas. Convert anonymous class to nested
  • Refactorizaciones de genericidad. Infer Generic Type
  • Refactoriza a un patrón de diseño. Introduce Factory Method
  • Conocer como Eclipse aplica refactorizaciones : Encapsulate, Push down...
Code smells
  • Definición y descripción de defectos de diseño (smells).
  • Corrigiendo code smells mediante refactorizaciones.
  • Revisando código con Incode. Detección automática de code smells.
  • Revisando código con PMD. Detección automática de anomalías.
Retrospectiva
  • Retrospectiva - ejemplos reales de refactorización
  • Integración continua con Travis en GitHub del proyecto de la sec. 3