Profile image
Refactoring: La Guía de Garfield para Desarrolladores 🐱

Refactoring: La Guía de Garfield para Desarrolladores 🐱

Wed Oct 09 2024
Desarrollo

¡Hola Chiquis!👋🏻 Imagina que eres Garfield, el gato más perezoso y amante de la lasaña. Tienes una montaña de platos sucios apilados en el fregadero y, aunque odias lavarlos, sabes que tarde o temprano tendrás que hacerlo. Refactorizar tu código es como lavar esos platos: es un trabajo un poco tedioso, pero necesario para mantener tu cocina (o tu código) limpia y organizada. En este post, exploraremos qué es el refactoring, por qué es importante y cómo hacerlo, utilizando ejemplos sencillos.

🐈 ¿Qué es Refactorizar? Refactorizar es el proceso de mejorar la estructura interna de un código sin cambiar su comportamiento externo. Es como reorganizar los muebles de una habitación: cambias la disposición, pero la habitación sigue siendo la misma. La idea es hacer que el código sea más legible, mantenible y escalable.

Refactoring es el proceso de reestructurar el código para mejorar su legibilidad, mantenibilidad y rendimiento, sin alterar su funcionalidad. Al igual que Garfield reorganiza su espacio para hacerlo más cómodo, los desarrolladores refactorizan el código para hacerlo más limpio y eficiente. Imagina que el código es la casa de Garfield. A veces, la casa se desordena y necesita una limpieza. Garfield no cambia su amor por la lasaña, pero reorganiza su espacio para que sea más cómodo y eficiente. De la misma manera, el refactoring no cambia lo que hace el código, pero lo hace más limpio y fácil de trabajar.

Refactoring en JavaScript Vamos a ver un ejemplo sencillo de refactoring en JavaScript para ilustrar estos beneficios. Código Antes del Refactoring

function calcularDescuento(precio, descuento) {
    if (descuento > 0) {
        let precioFinal = precio - (precio * (descuento / 100));
        console.log("El precio final es: " + precioFinal);
    } else {
        console.log("No hay descuento aplicado.");
    }
}

calcularDescuento(100, 20);
calcularDescuento(100, 0);

Código Después del Refactoring

function calcularDescuento(precio, descuento) {
    if (descuento > 0) {
        let precioFinal = aplicarDescuento(precio, descuento);
        mostrarPrecioFinal(precioFinal);
    } else {
        mostrarSinDescuento();
    }
}

function aplicarDescuento(precio, descuento) {
    return precio - (precio * (descuento / 100));
}

function mostrarPrecioFinal(precioFinal) {
    console.log("El precio final es: " + precioFinal);
}

function mostrarSinDescuento() {
    console.log("No hay descuento aplicado.");
}

calcularDescuento(100, 20);
calcularDescuento(100, 0);

¿Por qué refactorizar? 🍝

  • Mayor legibilidad: Código más fácil de entender para ti y otros desarrolladores. Un código limpio es más fácil de leer, entender y mantener. 
  • Menor mantenimiento: Código más sencillo de modificar y actualizar. Es más fácil agregar nuevas funcionalidades sin complicar el código existente.
  • Reducción de errores: Al simplificar el código, se reducen las posibilidades de introducir nuevos errores. Un código bien estructurado es más fácil de depurar. 
  • Mejora el rendimiento: En algunos casos, la refactorización puede optimizar el código y hacerlo más eficiente.
  • Reduce la Complejidad: Simplifica el código, haciéndolo más manejable. Las funciones están divididas en tareas más pequeñas y manejables. Es más fácil identificar y corregir errores en funciones pequeñas y específicas.
  • Promueve la Reutilización: Facilita la reutilización de componentes de código. La función aplicarDescuento puede ser reutilizada en otros contextos.

Garfield y la Refactorización 😼

  • El plato sucio: Representa un fragmento de código que es difícil de entender o mantener.
  • Lavar el plato: Equivale a refactorizar el código, mejorando su estructura y legibilidad.
  • La cocina limpia: Es el código refactorizado, más organizado y eficiente.

🐈‍⬛ Técnicas de Refactorización Al igual que hay diferentes formas de lavar los platos (a mano, en el lavavajillas, etc.), existen diversas técnicas de refactorización:

  • Renombrar: Cambiar el nombre de variables, funciones o clases para que sean más descriptivos.
  • Extraer método: Sacar una porción de código de un método y convertirla en un método independiente.
  • Introducir variable: Crear una nueva variable para almacenar un valor intermedio y mejorar la legibilidad.
  • Extraer clase: Dividir una clase grande en clases más pequeñas y especializadas.

Ejemplos

  1. Extracción de Funciones Antes del Refactoring:
function procesarPedido(pedido) {
    console.log("Procesando pedido de " + pedido.cliente);
    if (pedido.total > 100) {
        console.log("Aplicando descuento");
        pedido.total *= 0.9;
    }
    console.log("Total a pagar: " + pedido.total);
}

const pedido = { cliente: "Jon", total: 120 };
procesarPedido(pedido);

Después del Refactoring:

function procesarPedido(pedido) {
    logPedido(pedido);
    aplicarDescuento(pedido);
    logTotal(pedido);
}

function logPedido(pedido) {
    console.log("Procesando pedido de " + pedido.cliente);
}

function aplicarDescuento(pedido) {
    if (pedido.total > 100) {
        console.log("Aplicando descuento");
        pedido.total *= 0.9;
    }
}

function logTotal(pedido) {
    console.log("Total a pagar: " + pedido.total);
}

const pedido = { cliente: "Jon", total: 120 };
procesarPedido(pedido);
  1. Renombrar Variables Antes del Refactoring:
function calc(a, b) {
    return a + b;
}

const result = calc(5, 3);
console.log(result);

Después del Refactoring:

function calcularSuma(numero1, numero2) {
    return numero1 + numero2;
}

const resultado = calcularSuma(5, 3);
console.log(resultado);
  1. Eliminar Código Duplicado Antes del Refactoring:
function enviarCorreo(cliente) {
    console.log("Enviando correo a " + cliente.email);
}

function enviarNotificacion(cliente) {
    console.log("Enviando notificación a " + cliente.email);
}

const cliente = { email: "cliente@example.com" };
enviarCorreo(cliente);
enviarNotificacion(cliente);

Después del Refactoring:

function enviarMensaje(cliente, tipo) {
    console.log("Enviando " + tipo + " a " + cliente.email);
}

const cliente = { email: "cliente@example.com" };
enviarMensaje(cliente, "correo");
enviarMensaje(cliente, "notificación");

¿Cuándo Refactorizar? ✨

  • Código duplicado: Si encuentras bloques de código idénticos o muy similares, es hora de refactorizar.
  • Métodos demasiado largos: Los métodos muy largos son difíciles de entender y mantener.
  • Clases con demasiadas responsabilidades: Las clases deben tener una única responsabilidad bien definida.
  • Nombres poco claros: Si los nombres de variables, funciones o clases no son descriptivos, refactoriza.
  • Código difícil de entender: Si te cuesta entender tu propio código, es una señal de que necesita refactorización.

Consejos para Refactorizar 😉

  • Haz cambios pequeños y frecuentes: Refactoriza en incrementos pequeños para evitar introducir errores.
  • Escribe pruebas unitarias: Las pruebas unitarias te ayudarán a asegurarte de que la refactorización no ha introducido nuevos errores.
  • Utiliza herramientas de refactorización: Muchos IDEs ofrecen herramientas de refactorización que automatizan muchas tareas.
  • Revisa tu código regularmente: La refactorización es un proceso continuo, no una tarea única.

Conclusión 😽 El refactoring es una práctica esencial para mantener el código limpio, eficiente y fácil de mantener. Al igual que Garfield reorganiza su casa para que sea más cómoda, los desarrolladores deben refactorizar su código para mejorar su legibilidad y mantenibilidad. 

Al igual que Garfield eventualmente tiene que lavar los platos, los desarrolladores deben refactorizar su código de forma regular. La refactorización es una inversión de tiempo que se amortiza a largo plazo, ya que hace que tu código sea más mantenible, escalable y menos propenso a errores.

¡Así que, ponte manos a la obra y refactoriza tu código!

Fuentes: Testim: https://www.testim.io/blog/javascript-refactoring-5-plays-to-improve-code-quality/

¡Gracias por leer y déjame tus comentarios! 👇🏻

🚀 ¿Te ha gustado? Comparte tu opinión. Artículo completo, visita: https://lnkd.in/ewtCN2Mn https://lnkd.in/eAjM_Smy 👩💻 https://lnkd.in/eKvu-BHe https://dev.to/orlidev https://lnkd.in/ecHHabTD https://pin.it/2BuZ9N4n8 https://linktr.ee/orlidevs ¡No te lo pierdas!

Referencias: Imágenes creadas con: Copilot ( microsoft.com )

#PorUnMillóndeAmigos #MakeYourselfVisible

img125