La refactorización, o en inglés refactoring, es:

  • Una limpieza de código, básicamente
  • La refactorización no arregla errores ni incorpora funcionalidades
  • Altera la estructura interna del código sin cambiar su comportamiento externo
  • Si durante una refactorización se ha cambiado el comportamiento del software o web, es que has generado un error o bug

Sus objetivos pueden ser:

  • Mejorar la facilidad de comprensión del código
  • Cambiar su estructura y diseño
  • Eliminar código muerto
  • Facilitar el mantenimiento en el futuro

Ejemplo: identificar claramente los elementos

Quizá has llamado “t” a una expresión. Puedes asignarle un nombre con más significado: “tiempo”.

Ejemplo en CSS: usar una paleta reducida de colores

Quizá en tu web te has emocionado y le has dado decenas de tonos de colores:

css-refactoring-many-colors-example

Como indica Tim, es preferible escoger una paleta sencilla de color y jugar con ella:

css-refactoring-colors-example

De hecho, existen sitios que te ayudan a escoger diferentes combinaciones de colores.

Ejemplo: dividir responsabilidades

Imagina que tienes un código que calcula el precio de una cesta de la compra y, en el mismo código, estás realizando la suma y aplicando dos o más tipos de descuentos: por haber comprado más de cinco productos, un 2×1 en galletas, etc.

En lugar de tener una única función para realizar todo, es mejor contar con una función para cada responsabilidad: una para cada tarea.

En el blog Get Laura (¡me encanta el título!), podéis encontrar ejemplos de refactorización en Ruby.

Más información

two-hats-refactor

not-sure-if-refactoring

 

Imágenes: Martin Fowler y /dev/solita