Revisión de Código y Refactoring
Usa la IA como un revisor de código incansable que detecta bugs, sugiere mejoras y te ayuda a refactorear con confianza.
Contenido de Curso Premium
Esta lección es parte de un curso premium. Mejora a Pro para desbloquear todos los cursos premium y su contenido.
- Acceso a todos los cursos premium
- Más de 1000 plantillas de skills de IA incluidas
- Contenido nuevo cada semana
Tu Revisor Más Paciente
🔄 Repaso rápido: En la lección anterior, exploramos testing y aseguramiento de calidad. Ahora construyamos sobre esa base con revisión de código.
Los revisores humanos son invaluables. También tienen juntas, deadlines y días malos. Hojean el cuarto PR de la mañana. Se les pasa el bug sutil de coerción de tipos enterrado en la línea 247.
La IA no hojea. No tiene días malos. Detecta los mismos patrones sea la primera revisión del día o la centésima.
Esto no significa que la IA reemplace a los revisores humanos. Significa que la IA maneja los chequeos mecánicos — bugs, issues de seguridad, patrones de rendimiento, consistencia de estilo — para que los revisores humanos se enfoquen en arquitectura, decisiones de diseño y lógica de negocio.
El Prompt de Code Review con IA
Aquí va la estructura de prompt que obtiene las mejores revisiones:
Revisa este código para un pull request. Enfócate en:
1. Bugs y errores de lógica
2. Vulnerabilidades de seguridad
3. Issues de rendimiento
4. Legibilidad y mantenibilidad
Contexto: Este es un [descripción de qué hace el código]
en nuestro [tech stack]. Es [de qué es parte].
Convenciones existentes a verificar:
- [lista las convenciones clave de tu equipo]
[pega código]
Para cada issue, especifica:
- Severidad (crítico/warning/sugerencia)
- Número de línea o sección
- Qué está mal
- Cómo corregirlo
Una Revisión en Acción
Veamos esto funcionar en código real. Aquí va un endpoint de autenticación:
app.post('/api/login', async (req, res) => {
const { email, password } = req.body;
const user = await db.query(
`SELECT * FROM users WHERE email = '${email}'`
);
if (user.rows.length === 0) {
return res.status(401).json({ error: 'Usuario no encontrado' });
}
if (password === user.rows[0].password) {
const token = jwt.sign(
{ id: user.rows[0].id, role: user.rows[0].role },
'my-secret-key',
{ expiresIn: '24h' }
);
res.json({ token, user: user.rows[0] });
} else {
return res.status(401).json({ error: 'Contraseña incorrecta' });
}
});
La IA flaggea múltiples issues:
Crítico: SQL Injection (Línea 4) — El email se interpola directo en el query SQL. Un atacante podría enviar ' OR 1=1 --. Fix: Usa queries parametrizados.
Crítico: Comparación de password en texto plano (Línea 8) — Los passwords se comparan como texto plano, lo que significa que se almacenan sin hashear. Fix: Usa bcrypt.compare().
Crítico: Secret JWT hardcodeado (Línea 11) — La clave secreta está en el código fuente. Fix: Usa una variable de entorno.
Warning: Mensajes de error diferentes (Líneas 7, 15) — Esto filtra información — un atacante puede enumerar emails válidos. Fix: Usa el mismo mensaje: “Credenciales inválidas.”
Warning: Retornando el objeto de usuario completo (Línea 14) — Probablemente incluye el hash del password. Fix: Selecciona solo los campos necesarios.
Esos son cinco issues, tres vulnerabilidades de seguridad críticas. Un revisor humano cansado quizás detecta algunos. La IA los detecta todos, cada vez.
✅ Revisión Rápida: ¿Cuáles son las cuatro áreas de enfoque que producen las mejores revisiones de código con IA?
Revisiones Enfocadas
A veces no necesitas una revisión general — necesitas un enfoque específico:
Revisión de Seguridad: Ataques de inyección, bypasses de autenticación, exposición de datos sensibles, validación de input, prácticas criptográficas inseguras.
Revisión de Rendimiento: Patrones N+1, asignación de memoria innecesaria, índices de base de datos faltantes, oportunidades de caching, operaciones bloqueantes en contextos async.
Revisión de Legibilidad: Nombres poco claros, funciones haciendo demasiado, comentarios faltantes o engañosos, lógica condicional compleja, patrones inconsistentes.
Cada área de enfoque te da feedback más profundo y relevante que un genérico “revisa este código.”
Refactoring Asistido por IA
El refactoring es donde la IA realmente se gana el sueldo. El proceso:
Paso 1: Evalúa el Código
Aquí va una función que creció a 200 líneas y maneja
demasiadas responsabilidades. Identifica las responsabilidades
distintas y sugiere cómo separarlas.
[pega la función larga]
Paso 2: Planea el Refactoring
Basándote en tu análisis, crea un plan de refactoring.
Para cada paso:
1. Qué cambio hacer
2. Qué tests agregar/modificar
3. Cómo verificar que nada se rompió
Paso 3: Ejecuta Incrementalmente
No refactorees todo de una vez. Extrae una responsabilidad a la vez. Después de cada paso, corre tus tests. Verifica. Luego pasa a la siguiente extracción.
Paso 4: Verifica el Refactoring
Aquí va la función original y la versión refactoreada.
Verifica que:
1. Todos los comportamientos originales se preservaron
2. No se perdieron edge cases en el refactoring
3. El manejo de errores es equivalente o mejor
Patrones Comunes de Refactoring con IA
Extract Method: La IA identifica fronteras naturales en funciones largas y las extrae en funciones helper bien nombradas.
Replace Conditional with Polymorphism: Cuando tienes un switch/case masivo o cadena if/else, la IA puede sugerir un patrón strategy o factory.
Simplificar Condiciones Complejas:
// Antes
if (user.role === 'admin' || (user.role === 'manager'
&& user.department === dept && !user.suspended))
// Después (la IA sugiere extracción)
const canAccess = isAdmin(user) || isActiveDeptManager(user, dept)
Eliminar Duplicación: Pega dos funciones similares y pide a la IA que identifique la lógica compartida y cree una abstracción común.
Construyendo un Checklist de Revisión
Con el tiempo, desarrollarás patrones para lo que la IA detecta bien en tu codebase. Construye un checklist reutilizable que la IA pueda verificar contra cada PR.
Conclusiones Clave
- La IA detecta issues mecánicos consistentemente — fallas de seguridad, patrones de rendimiento, violaciones de estilo
- Las revisiones enfocadas (seguridad, rendimiento, legibilidad) dan feedback más profundo y accionable
- Usa revisión con IA antes de revisión humana para detectar los issues obvios primero
- Refactorea incrementalmente: evalúa, planea, ejecuta paso a paso, verifica
- Construye checklists de revisión reutilizables para los estándares de tu equipo
- Los revisores humanos deben enfocarse en arquitectura, diseño y lógica de negocio
Siguiente
En la Lección 6: Documentación y Compartir Conocimiento, abordaremos eso que todo developer sabe que debe hacer pero nunca encuentra tiempo. La IA cambia esa ecuación completamente.
Comprobación de Conocimientos
Primero completa el quiz de arriba
¡Lección completada!