Refactorings: ¿Qué son y porqué son importantes?

refactorings


La definición

Las técnicas de “Refactoring” son diferentes maneras de mejorar el diseño de un código fuente que ya está cubierto por buenas pruebas unitarias. Su objetivo siempre es aumentar la mantenibilidad del código haciéndolo flexible, robusto y más reutilizable.

Las pruebas unitarias nos dan la confianza de que el funcionamiento se mantiene correcto y así podemos cambiar la estructura del código para hacerlo más fácil de cambiar.

Si no tenemos pruebas unitarias y queremos mejorar el diseño del código entonces lo primero que debemos hacer es aislarlo y cubrirlo con buenas pruebas. Luego, podemos “refactorizarlo” con seguridad.

La motivación

¿Por qué queremos mejorar el diseño de un código fuente si ya tiene pruebas que funcionan?

  1. Cuando vamos a modificarlo, necesitamos entenderlo: Para hacerlo más fácil de entender  podemos mejorar los nombres de las variables o reubicarlas para que estén declaradas y asignadas lo más cerca de su uso. Si el código es más legible, podemos estar seguros si la modificación es allí o no.
  2. Cuando vamos a corregir un defecto y  queremos aislar dónde haremos la corrección: Queremos mejorar la organización de las funciones y clases con el fin de que la corrección quede aislada y pueda probarse con mayor seguridad.
  3. Cuando queremos reutilizar una parte de un código procedimental: Un código orientado a objetos se compone de partes de una sola responsabilidad, así que es más seguro reutilizar objetos que un procedimiento completo. Si tenemos un procedimiento, podemos refactorizarlo en objetos para poder retutilizar una parte.

En resumen, el refactoring le da al código fuente una forma mantenible. En este website compartimos cómo usar una serie de refactorings y cuándo usarlos. Enfatizo esto último, ya que no solo es importante saber que existen, sino cuál es el momento correcto para aplicar cada uno.

Por ejemplo:

  1. El refactoring de cómo extraer objetos se realiza luego de extraer funciones.
  2. Para extraer funciones requerimos de un procedimiento donde sus variables estén bien organizadas.
  3. Además, el refactoring del principio “Tell, Don´t Ask” se aplica luego de Parameter Object, no antes.

Hay un motivo para este orden, así que también es importante saber por qué del mismo. Estas técnicas son explicadas en la serie de Algoritmos Mantenibles.

Si sabemos aplicar estas técnicas correctamente, entonces podemos tomar cualquier código procedimental y mejorar su diseño de manera confiable. La práctica nos ayudará a ser más efectivos en cualquier programa que realicemos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s