Saltar al contenido
K0lateral
Programación

Refactoriza Código Legacy con IA

· Foto: Pexels

Prompt para descomponer funciones enormes y eliminar deuda técnica.

Refactoriza Código Legacy con IA
Foto: Pexels

¿Tienes una función de 500 líneas que nadie se atreve a tocar? Ese monolito de código que hace de todo y de nada al mismo tiempo.

Te suena: spaghetti code. Lógica de negocio mezclada con HTML, SQL esparcido, variables globales mutadas sin control. Es deuda técnica que crece como la mala hierba.

Pero hay una solución. No necesitas semanas de análisis. Solo un prompt bien construido y un LLM. Vas a descomponer esa bestia en funciones limpias, con nombres claros y responsabilidades únicas. En minutos.

💡 Concepto La descomposición de funciones no es solo dividir código. Es aplicar el Principio de Responsabilidad Única (SRP). Cada función debe hacer una sola cosa, y hacerla bien. La IA encuentra esos puntos de ruptura por ti.

Copia esto exactamente en tu LLM favorito:

Copiar Prompt Eres un arquitecto de software experto en refactorización. Tu tarea es descomponer el siguiente código legacy en funciones más pequeñas y con responsabilidades únicas. Sigue estas reglas estrictamente: 1. Identifica las responsabilidades ocultas dentro del bloque de código. 2. Separa cada responsabilidad en una función independiente con un nombre descriptivo (verbo + sustantivo). 3. Mantén la funcionalidad exacta: no cambies la lógica de negocio, solo reorganiza. 4. Usa nombres de variables y funciones en inglés (es el estándar en la industria). 5. Si encuentras código duplicado, extráelo a una función auxiliar compartida. 6. Devuelve el código refactorizado completo, con comentarios explicativos breves solo donde sea necesario. 7. Incluye al final una sección "Resumen de cambios" que liste: funciones creadas, funciones eliminadas y mejoras de legibilidad. Código legacy a refactorizar: [PEGA AQUÍ TU CÓDIGO]

Cómo usarlo paso a paso

📋 Paso 1 — Prepara el código

Copia la función entera que quieres descomponer. No la limpies ni la formatees. La IA necesita ver el caos para entenderlo.

🤖 Paso 2 — Pega el prompt

Copia el prompt exacto que te he dado. Sustituye [PEGA AQUÍ TU CÓDIGO] por tu bloque de código. No añadas instrucciones extra.

💻 Paso 3 — Revisa la salida

El LLM te devolverá el código refactorizado. Lee la sección "Resumen de cambios" primero. Te dará una visión general de lo que ha hecho.

🔄 Paso 4 — Iteración manual

¿No te gusta un nombre de función? Cámbialo. ¿Crees que una función debería dividirse más? Pídeselo. El prompt es tu punto de partida, no la respuesta final.

¿Por qué funciona?

  • Define un rol claro: "Eres un arquitecto de software experto" le da contexto al modelo. No está improvisando, está aplicando un patrón mental.
  • Reglas explícitas: Las 7 reglas son instrucciones de máquina. "Mantén la funcionalidad exacta" evita que la IA invente optimizaciones que rompan el código.
  • Límite de responsabilidad: Al pedir funciones con "verbo + sustantivo" (ej: calcularTotal(), validarEmail()), fuerzas a la IA a segmentar por acciones, no por líneas.
  • Sección de resumen: Ese pequeño informe al final es tu checklist. Sabes exactamente qué ha cambiado y puedes hacer code review rápido.

Ejemplo real

Código de entrada (legacy):

Entrada function procesarPedido(pedido) { let total = 0; let impuesto = 0; let descuento = 0; let envio = 0; for (let i = 0; i < pedido.items.length; i++) { total += pedido.items[i].precio pedido.items[i].cantidad; } if (pedido.pais === 'ES') { impuesto = total 0.21; } else if (pedido.pais === 'DE') { impuesto = total 0.19; } else { impuesto = total 0.15; } if (total > 100) { descuento = total * 0.1; } if (total > 50) { envio = 0; } else { envio = 5.99; } let final = total + impuesto - descuento + envio; console.log('Total:', total); console.log('Impuesto:', impuesto); console.log('Descuento:', descuento); console.log('Envío:', envio); console.log('Final:', final); return final; } Respuesta esperada (refactorizada):

Respuesta esperada function calcularSubtotal(items) { return items.reduce((acc, item) => acc + item.precio item.cantidad, 0); } function obtenerTasaImpuesto(pais) { const tasas = { 'ES': 0.21, 'DE': 0.19 }; return tasas[pais] || 0.15; } function calcularImpuesto(subtotal, pais) { return subtotal obtenerTasaImpuesto(pais); } function calcularDescuento(subtotal) { return subtotal > 100 ? subtotal * 0.1 : 0; } function calcularEnvio(subtotal) { return subtotal > 50 ? 0 : 5.99; } function mostrarResumen(total, impuesto, descuento, envio, final) { console.log('Total:', total); console.log('Impuesto:', impuesto); console.log('Descuento:', descuento); console.log('Envío:', envio); console.log('Final:', final); } function procesarPedido(pedido) { const subtotal = calcularSubtotal(pedido.items); const impuesto = calcularImpuesto(subtotal, pedido.pais); const descuento = calcularDescuento(subtotal); const envio = calcularEnvio(subtotal); const totalFinal = subtotal + impuesto - descuento + envio; mostrarResumen(subtotal, impuesto, descuento, envio, totalFinal); return totalFinal; } Resumen de cambios: Se crearon 6 funciones auxiliares. La función principal se redujo de 27 líneas a 6. Cada función tiene una responsabilidad única y nombres autoexplicativos.

Tabla de casos de uso

EscenarioQué consigues Función de 400 líneas con lógica de negocio y UI mezcladaSeparas la lógica de presentación, validación y cálculo en funciones independientes Código con variables globales mutadas dentro de la funciónConviertes esas mutaciones en funciones puras que reciben parámetros y devuelven valores Bloque con 3 niveles de if-else anidadosCreas un mapa de estrategias o funciones de decisión que eliminan la anidación Función que hace llamadas a API y procesa datos en el mismo cicloSeparas la capa de datos (fetch) de la capa de transformación (procesamiento)

📚 ¿Quieres más prompts?

Este prompt es solo el principio. Tengo una biblioteca completa de prompts para refactorización, testing, documentación y más. Todo para que dejes de perder horas con código legacy.

Ver Biblioteca →

Resumen

No necesitas ser un gurú de la refactorización. Solo necesitas el prompt adecuado. Este enfoque te permite descomponer funciones enormes en minutos, eliminar deuda técnica y dejar un código que tu yo del futuro te agradecerá.

¿El truco? La IA no piensa. Sigue instrucciones. Tú le das las instrucciones correctas. Eso es ingeniería de prompts.

Tags: refactorización, código legacy, deuda técnica, prompt engineering, inteligencia artificial, programación, funciones, SRP

Más sobre Programación

Ver todo →