Code Review en JavaScript: qué revisar y cómo dar retroalimentación en la práctica

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: por qué el code review no se trata de "encontrar errores"

\n

El code review (revisión de código) no es solo una formalidad o una forma de encontrar errores tipográficos. En el desarrollo moderno con JavaScript y Node.js, es la herramienta principal para mantener la calidad del código, compartir conocimientos en el equipo y prevenir la deuda técnica. Sin embargo, muchos desarrolladores reducen la revisión a verificar la sintaxis, pasando por alto problemas arquitectónicos, rendimiento y legibilidad.

\n

En este artículo, analizaremos qué revisar exactamente en el código JavaScript (usando Node.js como ejemplo) y cómo dar retroalimentación para no ofender a un colega, sino ayudarlo a crecer. Ejemplos prácticos de código ayudarán a afianzar el material.

\n\n

1. Qué revisar en el código JavaScript: lista de verificación práctica

\n

Comencemos con puntos de verificación concretos. Los dividiremos en tres niveles: sintaxis/estilo, lógica/seguridad y arquitectura.

\n\n

1.1. Estilo de código y formato

\n

Aquí es simple: use un linter (ESLint) y un formateador (Prettier). En la revisión no debería haber discusiones sobre espacios. Configure los archivos de configuración en el proyecto una vez. Verifique que:

\n
    \n
  • El código cumpla con las reglas de eslint-config-airbnb o sus configuraciones personalizadas.
  • \n
  • No haya console.log innecesarios (a menos que sea modo de desarrollo).
  • \n
  • Los nombres de las variables tengan sentido: const userData, no const x.
  • \n
\n\n

1.2. Lógica de trabajo con asincronía (Promise, async/await)

\n

Esta es un área común de errores en Node.js. Verifique:

\n
    \n
  • El manejo de errores en funciones asíncronas. La falta de try/catch puede provocar la caída del proceso.
  • \n
  • El uso correcto de await dentro de bucles. Si las tareas no dependen entre sí, use Promise.all.
  • \n
\n

Mal:

\n
// Ejecución secuencial, aunque podría ser paralela\nconst results = [];\nfor (const id of ids) {\n  const data = await fetchData(id); // Esperamos cada solicitud\n  results.push(data);\n}\n
\n

Bien:

\n
// Ejecución paralela\nconst promises = ids.map(id => fetchData(id));\nconst results = await Promise.all(promises);\n
\n\n

1.3. Seguridad y fugas de memoria

\n

Para Node.js es crítico:

\n
    \n
  • Ausencia de inyecciones: no use eval o new Function a menos que sea estrictamente necesario.
  • \n
  • Cierre de flujos (streams), conexiones a la base de datos y descriptores de archivos.
  • \n
  • Validación de datos de entrada. Nunca confíe en el cuerpo de la solicitud (req.body).
  • \n
\n\n

2. Cómo dar retroalimentación: psicología y táctica

\n

Incluso la lista de verificación perfecta no funcionará si la retroalimentación (feedback) hace que el autor del código quiera cerrar el PR y renunciar. Aquí hay algunas reglas.

\n\n

2.1. La regla del "sándwich" (opcional pero efectiva)

\n

Comience con un comentario positivo, luego señale el problema y termine con apoyo. Por ejemplo:

\n
    \n
  • "¡Excelente solución usando Map para el almacenamiento en caché!"
  • \n
  • "Sin embargo, aquí hay un problema potencial con la mutación del array original. Usemos .map() en lugar de .forEach() con push."
  • \n
  • "Por lo demás, el código está limpio, ¡gracias por la rápida corrección!"
  • \n
\n\n

2.2. Comente el código, no a la persona

\n

En lugar de "Escribiste un bucle horrible", diga "Este bucle se puede reemplazar con Array.reduce para mejorar la legibilidad". Evite el pronombre "tú" en un contexto negativo.

\n\n

2.3. Proporcione contexto y alternativas

\n

Simplemente escribir "Esto está mal" es malo. Explique por qué y sugiera una alternativa. Ejemplo de mal comentario:

\n
"No uses var."
\n

Buen comentario:

\n
"Aquí var crea una variable en el ámbito global, lo que puede provocar errores. Cambiémoslo por const, ya que el valor no se reasigna."

Blogs

Book Recommendations