CodeIA Logo
Inicio
¿Qué es la Ingeniería de Contexto?ExperienciaProyectos realizados
Comunidad
FeedMiembrosCuadro de HonorCalendarioBolsa de trabajoEncuestasProyectos de la Comunidad
NoticiasPrecios
Formación
CursosLecciones
Co-Projects
Propuestas de proyectosEnviar propuesta de proyecto
RoadmapGlosarioContacto
Iniciar Sesión
CodeIA Logo

Transformando ideas en software profesional con IA. La nueva era del desarrollo ágil.

Legal

Política de PrivacidadTérminos de ServicioTérminos de SuscripciónAviso LegalCookies

Sígueme

Contactar

© 2026 CodeIA. Todos los derechos reservados.

Hecho con♥por sn4p.dev

Glosario/Refactor

Refactor

Paulo10 de diciembre de 2025

Definición

Proceso de reestructurar código existente para mejorarlo sin cambiar su comportamiento externo.

Descripción

Refactoring (refactorización) es el proceso de reestructurar código existente sin cambiar su comportamiento externo. Los objetivos son: - Mejorar legibilidad - Reducir complejidad - Eliminar duplicación (DRY) - Facilitar mantenimiento - Preparar para nuevas funcionalidades Técnicas comunes: Extract Method, Rename, Move, Inline, Replace Conditional with Polymorphism. Regla de oro: Refactorizar con tests que validen que el comportamiento no cambió.

Ejemplo

// ANTES: Código difícil de mantener function processOrder(order) { let total = 0; for (let i = 0; i < order.items.length; i++) { if (order.items[i].type === 'physical') { total += order.items[i].price * order.items[i].quantity; if (order.items[i].quantity > 10) { total = total * 0.9; // 10% descuento } } else if (order.items[i].type === 'digital') { total += order.items[i].price * order.items[i].quantity * 0.8; } } // Más lógica mezclada... return total; } // DESPUÉS: Código refactorizado interface OrderItem { type: 'physical' | 'digital'; price: number; quantity: number; } const BULK_DISCOUNT_THRESHOLD = 10; const BULK_DISCOUNT = 0.9; const DIGITAL_DISCOUNT = 0.8; function calculateItemTotal(item: OrderItem): number { const baseTotal = item.price * item.quantity; if (item.type === 'digital') { return baseTotal * DIGITAL_DISCOUNT; } if (item.quantity > BULK_DISCOUNT_THRESHOLD) { return baseTotal * BULK_DISCOUNT; } return baseTotal; } function calculateOrderTotal(items: OrderItem[]): number { return items.reduce((total, item) => { return total + calculateItemTotal(item); }, 0); } // Ahora es testeable, legible y extensible describe('calculateItemTotal', () => { it('aplica descuento a items digitales', () => { const item = { type: 'digital', price: 100, quantity: 1 }; expect(calculateItemTotal(item)).toBe(80); }); });

← Volver al glosario