Refactorizar para mejorar la calidad del código Java

Aprende cómo evolucionar un desarrollo software de manera eficiente aplicando refactoring en la gestión del cambio.
3.9 (6 ratings) Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
50 students enrolled
$19
$60
68% off
Take This Course
  • Lectures 23
  • Length 4.5 hours
  • Skill Level Intermediate Level
  • Languages Spanish
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

About This Course

Published 9/2015 Spanish

Course Description

Curso de refactorización en Java.

Utilizando el IDE de Eclipse y múltiples plugins aprenderemos a incorporar las actividades de refactoring en el proceso de desarrollo del software diario. Relacionaremos la refactorización con las actividades del proceso de desarrollo:

  • pruebas y calidad de las pruebas mediante su cobertura (plugin JUnit y Eclemma)
  • control de versiones (plugin Git)
  • comprensión de código mediante diagramas UML (plugin ObjectAid)
  • revisión de la calidad del código basada en defectos de código (plugin InCode y PMD)

El aprendizaje se hará de manera progresiva, primero conociendo y aplicando refactorizaciones aisladas del catálogo de Eclipse mediante pequeños ejemplos de código. Después se presentarán un caso de estudio más avanzado donde se aplicará una secuencia de refactorizaciones con el objetivo de adaptar un código existente con una nueva funcionalidad. En la última sección del curso se presentarán herramientas de detección de code smells que ayuden a incorporar las actividades de refactorización en proyectos reales de desarrollo software.

La planificación recomendada por el profesor es dedicar cuatro semanas de 6-8 horas de trabajo cada semana.

What are the requirements?

  • Haber desarrollado un pequeño proyecto en algún lenguaje de programación orientado a objetos.

What am I going to get from this course?

  • Ahorrar tiempo en el mantenimiento de las actualizaciones de aplicaciones Java
  • Conocer un catálogo de refactorizaciones disponible en el entorno de desarrollo Eclipse
  • Saber utilizar conjuntamente los sistemas de control de versiones (Git) con un proceso de refactorización
  • Evaluar la calidad de un código Java en función de los defectos de código (code smells)

What is the target audience?

  • Profesionales del desarrollo de aplicaciones informáticas, especialmente aquellos que trabajen con lenguajes orientados a objetos como Java.

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.

Curriculum

Section 1: Introducción
12:06

Una introducción teórica basada en transparencias del concepto de refactorización. Se define el concepto y se contextualiza su uso en el proceso de desarrollo del software. Se analizan las ventajas y algunos problemas encontrados a la hora de refactorizar.

  • 0:44 Avance
  • 2:50 Definición y origen de refactoring
  • 4:22 Principios de refactorización: ¿Cuándo refactorizar?
  • 5:24 Principios de refactorización: Metáfora de los dos sombreros
  • 6:12 Principios de refactorización: ¿Por qué refactorizar?
  • 9:12 Principios de refactorización: Problemas con la refactorización
  • 10:24 Misceláneo: Herramientas de refactoring
  • 11:10 Misceláneo: Metodologías ágiles
  • 11:36 Repaso
  • 12:06 Créditos
12 questions

El objetivo de este cuestionario es repasar los conceptos teóricos presentados en el video tutorial de introducción. Sólo se trabaja con el nivel de conocimiento comprensión de conceptos.

El tiempo estimado de realización es 8 - 15 minutos

Ánimo que puedes con esto y mucho más ;-)

09:21

En esta clase se indica cómo obtener desde Internet e instalar el entorno básico de desarrollo en Java que se utilizará en el curso.

Si has trabajado previamente con Eclipse y Java quizás puedes saltarte la clase pero es interesante que conozcas las versiones de las herramientas que utilizas. Aunque el módulo de refactorizaciones presentado el curso es bastante estable puede tener pequeñas variaciones según versiones.

  • 0:40 Avance
  • 3:34 Instalación de Java Development Kit 8 (jdk 8)
  • 6:05 Instalación Eclipse Luna distribución Java Developer
  • 7:23 Descripción de las vistas de la perpectiva de Java
  • 8:45 Configuración de Eclipse con jdk 8
  • 9:21 Créditos
11:38

De la teoría a la práctica. La refactorización no es una práctica aislada dentro de las metodologías ágiles de desarrollo de software. Hay dos prácticas que están relacionadas: control de versiones y pruebas automáticas.

Aunque el control de versiones se escapa fuera del ámbito del curso hemos considerado interesante distribuir muchos códigos de ejemplo mediante Gits (repositorio de control de versiones). En el videotutorial se indica cómo instalar los códigos de ejemplo mediante la perspectiva de Eclipse que permite interactuar con repositorios de proyectos de tipo Git.

Comprobar la calidad de los códigos de prueba disponibles antes de refactorizar es importante para poder asegurar que el código no cambia su comportamiento externo después de la refactorización. Por eso se presenta cómo obtener e instalar un plugin de Eclipse que permita medir la cobertura de las pruebas. Además se muestra mediante un caso de estudio cómo medir la cobertura de las pruebas.

Ambas prácticas se utilizarán en el resto de ejercicios.

  • 1:11 Avance
  • 2:50 Funcionalidad Gits de GitHub para distribuir ejemplos de código
  • 5:03 Clonación de repositorios Git desde Eclipse
  • 6:25 Crea un proyecto Java en Eclipse a partir del repositorio local Git
  • 7:25 Ejecución de pruebas con JUnit
  • 9:15 Instalación de plugin de Eclipse Eclemma
  • 10:25 Uso del Eclemmaa para medir la cobertura de pruebas
  • 11:08 Cupón de descuento 50% curso de pruebas automáticas
  • 11:38 Créditos
10:22

Necesitamos un poco más de comprensión que nos ayude a seguir madurando el concepto de refactorización.

En esta clase se presenta el catálogo de refactorizaciones de orientación a objetos teórico más conocido y disponible en Internet. El profesor indica como navegar y buscar por el catálogo e interpreta algunos de los campos utilizados en la descripción de cada refactorización.

A partir del catálogo teórico nacen las diferentes implementaciones en los entornos de desarrollo software (IDE) como Eclipse. Se presenta como se accede al catálogo de Eclipse y se analiza el contenido de ambos catálogos justificando la necesidad del catálogo de teórico de Fowler.

  • 0:44 Avance
  • 4:45 Catálogo de refactoring.com
  • 8:00 Catálogo de refactorizaciones de Eclipse
  • 9:53 Comparación de ambos catálogos mediante ejercicios
  • 10:22 Créditos
14 questions

El objetivo de este cuestionario es que conozcas el nombre de algunas refactorizaciones más utilizadas y su descripción básica. Además se busca que mientras respondes a las preguntas aprendas a conocer distintos catálogos de refactorizaciones, sus diferencias y sus métodos de consulta.

El recurso necesario para realizar el cuestionario es tener disponibles los catálogos de refactorizaciones. Se necesita ejecutar Eclipse y acceder a http://refactoring.com/catalog/

El tiempo estimado para realizar este cuestionario es de 30- 45 minutos.

¿Estás preparado?
Section 2: Catálogo de refactorizaciones básicas de Eclipse
13:17

Se presenta la refactorización de MoveMethod y su aplicación con Eclipse con un pequeño ejemplo de código distribuido mediante Gits (la url está en recursos del tema).

  • 0:43 Avance
  • 1:34 Justificación de la refactorización
  • 3:57 Presentación del código de ejemplo
  • 10:15 Aplicación de la refactorización con Eclipse
  • 12:45 Historia de las refactorizaciones realizadas
  • 13:17 Créditos
12:44

Se presenta la refactorización de Rename y su aplicación con Eclipse con un pequeño ejemplo de código distribuido mediante Gits (la url está en recursos del tema).

  • 0:35 Avance
  • 2:08 Justificación de la refactorización
  • 4:41 Presentación del código de ejemplo
  • 7:14 Instalación del Gits en Eclipse
  • 12:12 Aplicación de la refactorización con Eclipse
  • 13:44 Créditos
12:56

Se presenta la refactorización Extract Method y su inversa Inline Method. Primero se aplica con Eclipse Extract Method con un pequeño ejemplo de código distribuido mediante Gits (la url está en recursos del tema). Luego se vuelve al estado original aplicando la Inline Method.

  • 0:44 Avance
  • 3:20 Justificación de la refactorización
  • 5:10 Presentación del código de ejemplo
  • 7:04 Instalación del Gits en Eclipse
  • 10:37 Aplicación de la refactorización Extract Method con Eclipse
  • 12:25 Aplicación de la refactorización Inline Method con Eclipse
  • 13:56 Créditos
05:36

Se reflexiona sobre las refactorizacionres Extract y su inversa Inline. Se aplican sobre diferentes abstraciones de código: constantes y variables locales. Se apoya en el ejemplo de código del tema anterior.

  • 0:36 Avance
  • 3:17 Aplicación de la refactorización Extract Constant con Eclipse
  • 4:18 Aplicación de la refactorización Inline Constant con con Eclipse
  • 4:47 Aplicación de la refactorización Extract Local Variable con Eclipse
  • 5:36 Créditos
4 questions

El objetivo de este cuestionario es conozcas como aplicar las refactorizaciones de este tema sobre pequeños ejemplos de código.

Como enunciado de los ejercicios se proporciona un código Java origen y un histórico de refactorizaciones aplicadas sobre él. Esta información se distribuye con una dirección web a un Gits público. El resultado del ejercicio es el nuevo código resultante después de aplicar la refactorización.

Consejo: Intenta responder a las preguntas sin utilizar Eclipse

El tiempo estimado para realizar este cuestionario es de 30- 45 minutos.

Seguro que lo haces bien ;-)

Section 3: Proceso de refactoring
44 pages

Estas transparencias presentan el caso de estudio y describe paso a paso el proceso las refactorización presentados en los videos de la sección. Es aconsejable leerlas previamente para mejorar la comprensión de la sección.

Tiempo aproximado de lectura 30-60 minutos.

13:33

En este tema se describe un pequeño proyecto software que será utilizado para presentar el concepto de proceso de refactorización, o dicho de otro modo, "secuencia de refactorizaciones con el objetivo de adecuar el código para soportar un nuevo requisito o resolver un bug"

  • 1:22 Avance
  • 2:15 Definición del proceso de refactorización
  • 3:31 Comprensión inicial del proyecto
  • 4:30 Instalación y clonación del proyecto desde un repositorio Github
  • 9:05 Comprensión del código
  • 10:19 Comprobación de la calidad de las pruebas automáticas
  • 12:58 Principios de proceso de refactorización
  • 13:33 Créditos
12:28

Se refactoriza el proyecto con Eclipse para añadir una nueva funcionalidad "Generar informes en formato html". En el proceso de refactorización se aplican las refactorizaciones presentadas en la sección segunda de este curso.

  • 0:35 Avance
  • 2:15 Comprensión del código del proyecto para adaptarlo (Customer.statement())
  • 3:18 Aplicación con Eclipse de Extract Method para reducir complejidad de método
  • 5:50 Ajustando parámetros y variables locales Change Method Signature
  • 7:18 Aplicación con Eclipse de Rename para mejorar la comprensión
  • 10:05 Aplicación con Eclipse de Move para mejorar el encapsulamiento
  • 11:58 Aplicación con Eclipse de Rename y Change Method Signature para mejorar la comprensión
  • 12:28 Créditos
08:50

Se continúa refactorizando el proyecto con Eclipse para añadir una nueva al funcionalidad "Generar informes en formato html". En el proceso de refactorización se aplican las refactorizaciones presentadas en la sección segunda de este curso.

  • 0:22 Avance
  • 1:16 Comprensión del código del proyecto para adaptarlo (Customer.statement())
  • 2:25 Aplicación con Eclipse de Extract Method para reducir complejidad de método
  • 4:31 Ajustando parámetros y variables locales Change Method Signature
  • 5:40 Aplicación con Eclipse de Move Method para mejorar el encapsulamiento
  • 7:48 Añadir la nueva funcionalidad y nuevos test
  • 8:20 Resumen del caso practico
  • 8:50 Créditos
15:00

Una nueva funcionalidad "Nuevo precios de alquiler dependiendo del tipo de películas ". En el proceso de refactorización se aplican nuevas refactorizaciones Replace Type Code with State/Strategy y Replace Type Code with Polymorphism

  • 1:02 Avance
  • 1:35 Presentación del nuevo requisito
  • 4:30 Instalación plugin ObjectAid para sincronizar diagramas UML con el código
  • 7:10 Compresión de código del proyecto con UML (plugin ObjectAid)
  • 9:35 Describiendo el nuevo diseño deseado para adaptar el código al cambio solicitado
  • 12:06 Catálogo de Fowler: Replace Type Code with State/Strategy y Replace Type Code with Polymorphism
  • 14:30 Intentando refactorizar desde Eclipse descomponiendo en operaciones más simple
  • 15:00 Créditos
08:14

Se muestra la evolución del código paso a paso para adaptar el sistema con la nueva funcionalidad "Nuevos precios de alquiler dependiendo del tipo de película ". Los pasos son descritos con las refactorizaciones Replace Type Code with State/Strategy y Replace Type Code with Polymorphism. Se utiliza los commit/cambios de un repositorio Github para presentar la evolución de código al aplicar la refactorización.

  • 1:01 Avance
  • 3:42 Descripción de cómo interpretar la solución mediante commits en un repositorio Github
  • 3:30 Descripción de cambios de la refactorización "mover métodos" en Github
  • 4:30 Análisis de los cambios con las descripción de los commits de Github para aplicar eplace Type Code with State/Strategy
  • 7:24 Relación proceso de refactoring con los commits de un sistema control de versiones
  • 8:14 Créditos
Section 4: Catálogo de refactorizaciones (ii)
07:26

Se presenta la refactorización de EncapsulateField y su aplicación con Eclipse con un pequeño ejemplo de código distribuido mediante Gits (la url está en recursos del tema).

  • 0:37 Avance
  • 1:51 Justificación de la refactorización
  • 3:13: Presentación del código de ejemplo
  • 5:00 Instalación y clonación de código de ejemplo en Gits
  • 6:52 Aplicación de la refactorización con Eclipse
  • 7:26 Créditos
13:19

Se presenta tres refactorizaciones relacionadas con la herencia: Extract Interface, Push Down y su inversa Pull Up. Con un pequeños ejemplos de código distribuidos mediante Gits (la urls estan en recursos del tema) se aplican con Eclipse.

  • 0:35 Avance
  • 2:50 Justificación de la refactorización
  • 3:18 Presentación del código de ejemplo
  • 5:00 Aplicación de la refactorización con Eclipse Push down
  • 6:14 Aplicación de la refactorización con Eclipse Extract Interface
  • 7:25 Aplicación de la refactorización con Eclipse Pull Up
  • 12:47 Problemas de aplicación de estas refactorizaciones
  • 13:19 Créditos
04:56

Se presenta la refactorización de Convert Anonymous Class to Nested y su aplicación con Eclipse con un pequeño ejemplo de código distribuido mediante Gits (la url está en recursos del tema).

  • 0:29 Avance
  • 2:50 Justificación de la refactorización con un código de ejemplo
  • 4:24 Aplicación de la refactorización con Eclipse
  • 4:56 Créditos
05:17

Se presenta la refactorización de Infer Generic Type y su aplicación con Eclipse con un pequeño ejemplo de código distribuido mediante Gits (la url está en recursos del tema).

  • 0:10 Avance
  • 2:10 Explicación básica de genericidad con un ejemplo
  • 4:45 Aplicación de la refactorización con Eclipse
  • 5:17 Créditos
09:38

En está clase se explica teóricamente el concepto de patrón de diseño utilizando un ejemplo de la wikipedia. Una vez comprendido el nuevo diseño del patrón se presenta un ejemplo de código distribuido en mediante Gits que sirve para aplicar la refactorización de Eclipse Introduce Factory Method.

  • 0:38 Avance
  • 3:20 Justificación de la refactorización
  • 3:55 Presentación de código de ejemplo con Gits
  • 5:15 Instalación y clonación del ejemplo desde el repositorio Gits
  • 7:20 Primera variante de aplicación de la refactorización con Eclipse
  • 9:08 Segunda variante de aplicación de la refactorización con Eclipse
  • 9:38 Créditos
2 questions

El objetivo de este cuestionario es conozcas como aplicar las refactorizaciones de este tema sobre pequeños ejemplos de código.

Como enunciado de los ejercicios se proporciona un código Java origen y un histórico de refactorizaciones aplicadas sobre él. Esta información se distribuye con una dirección web a un Gits público. El resultado del ejercicio es el nuevo código resultante después de aplicar la refactorización.

Consejo: Intenta responder a las preguntas sin utilizar Eclipse

El tiempo estimado para realizar este cuestionario es de 30 minutos.

Seguro que lo haces bien ;-)

Section 5: Code smells
12:05

Una introducción teórica basada en transparencias del concepto de defecto de diseño. Se define el concepto indicando la multitud de términos similares en la literatura (bad smells, code smells, antipatterns, design flaws...). Se presenta brevemente el catálogo de defectos denominados bad smells y se ordena en categorias. Por último se analiza las distintas propuestas utilizadas para describir un defectos: formales y no formales.

  • 0:50 Avance
  • 4:07 Definición y catálogos de code smells
  • 8:33 Clasificación de defectos de diseño
  • 11:10 Descripción de defectos de diseño
  • 12:05 Resumen y créditos


06:35

En esta tema se presenta un tabla que ayuda a corregir defectos (code smells) mediante refactorizaciones. Se analizan algunos defectos corregidos en el caso de estudio del proyecto del videoclub.

  • 0:40 Avance
  • 1:57 Presentación de la guía para corregir defectos
  • 2:37 Ejemplo de corrección mediante refactorizaciones de métodos demasiado grande (Long Method)
  • 3:50 Ejemplo de corrección mediante refactorizaciones de exceso de comentarios (Comments)
  • 4:28 Ejemplo de corrección mediante refactorizaciones de envídia de caracteristicas (Feature Envy)
  • 6:01 Ejemplo de corrección mediante refactorizaciones de herenecia simulada (Switch statement)
  • 6:35 Créditos
09:45

Se presenta la herramienta InCode que ayuda a detectar la existencia de code smells en el código y otras características de calidad.

  • 0:29 Avance
  • 2:20 Instalación de InCode
  • 5:10 Carga del proyecto open source Eclemma en Incode
  • 9:10 Análisis de calidad de del código del proyecto open source Eclemma
  • 9:45 Créditos
08:22

Se presenta la herramienta PMD que ayuda a detectar la existencia de múltiples problemas en el código.

  • 0:29 Avance
  • 2:20 Instalación de PMD como plugin de Eclipse
  • 3:40 Carga del proyecto open source Eclemma en Eclipse
  • 6:35 Análisis de calidad de del código del proyecto open source Eclemma
  • 7:48 Análisis de código duplicado
  • 8:22 Créditos

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Curso Especialista Universitario Desarrollo avanzado de aplicaciones Java, Profesorado de la Universidad de Burgos y Arcadia Consulting

"Curso Especialista Universitario Desarrollo avanzado de aplicaciones Java" es una iniciativa de la empresa Arcadia Consulting y la Universidad de Burgos para la formación de profesionales en el lenguaje de programación Java (JSE y JEE) así como en herramientas y frameworks asociados a esta tecnología, mediante el uso de metodologías de formación on-line

Grandes proveedores tecnológicos (Google a través de Android, Oracle con la compra de Sun), productos de software libre y grupos corporativos en sectores diversos (energía, telecomunicaciones, financiero, etc...) apuestan de forma directa por esta tecnología. De acuerdo con las principales consultoras de recursos humanos (Informe Addeco), año tras año el perfil de desarrollador Java se posiciona en el mercado laboral como uno de los nichos de empleo con mayor demanda y oportunidades de contratación.

Nuestros objetivos son:

  • Formar en profundidad en herramientas, tecnologías, metodologías y servicios del lenguaje Java (Plataformas & Frameworks).
  • Dotar al alumno de las capacidades y habilidades para el desarrollo de proyectos con estas tecnologías.
  • Aplicar de manera práctica los conocimientos adquiridos utilizando metodologías, herramientas y técnicas de una forma profesional.
  • Nuestros cursos están orientados a:
  • Titulados universitarios, informáticos, programadores.
  • Personal IT o consultores de empresas del sector tecnológico con acceso universitario.
  • Cualquier persona y/o perfil profesional relacionado con el desarrollo de aplicaciones en lenguaje Java.

Ready to start learning?
Take This Course