Aikido

Cómo añadir comentarios explicativos a las funciones para un código más seguro y mantenible

Legibilidad

Regla 

Funciones sin comentarios explicativos.
Las funciones sin comentarios son difíciles de 
entender para otros desarrolladores.

Lenguajes compatibles: 45+

Introducción

Las funciones sin comentarios obligan a los desarrolladores a inferir la intención únicamente a partir de los detalles de implementación. Esto ralentiza las revisiones de código y hace que el mantenimiento sea más propenso a errores. Las explicaciones faltantes también ocultan suposiciones sobre la validación, las expectativas de entrada o las restricciones de seguridad. Una documentación clara reduce el mal uso y ayuda a los equipos a comprender el comportamiento del código más rápidamente.

Por qué es importante

Implicaciones de seguridad: La falta de comentarios oculta suposiciones sobre la validación, las comprobaciones de autorización y las entradas de confianza, lo que facilita el uso indebido y aumenta los riesgos de seguridad.

Impacto en el rendimiento: Las funciones no documentadas pueden utilizarse incorrectamente, provocando operaciones costosas repetidas, análisis innecesarios o una gestión ineficiente de los datos.

Mantenibilidad: Los desarrolladores dedican más tiempo a leer y a realizar ingeniería inversa de la lógica cuando la intención no está documentada, lo que ralentiza la refactorización y la incorporación de nuevos miembros.

Ejemplos de código

❌ No conforme:

// No explanation of expected input or security assumptions
function normalizeUser(user) {
    if (!user || typeof user !== 'object') return null;

    return {
        id: String(user.id).trim(),
        email: user.email.toLowerCase(),
        roles: user.roles.filter(r => r !== 'guest')
    };
}

Por qué está mal: La función procesa campos relevantes para la seguridad, pero no documenta suposiciones sobre fuentes confiables, estructura esperada o restricciones de entrada.

✅ Conforme:

/**
 * Normalize user data from external input.
 * Expects: `user` contains `id`, `email`, and `roles`.
 * Rejects invalid structures and filters unsafe role values.
 * Ensures normalized identifiers and lowercased email for consistency.
 */
function normalizeUser(user) {
    if (!user || typeof user !== 'object') return null;

    return {
        id: String(user.id).trim(),
        email: user.email.toLowerCase(),
        roles: user.roles.filter(r => r !== 'guest')
    };
}

Por qué esto es importante: El comentario documenta la intención, las entradas esperadas y las restricciones de seguridad, haciendo que el uso sea predecible y previniendo una integración insegura.

Conclusión

Añade comentarios claros a cualquier función donde la intención, las suposiciones o las restricciones no sean obvias a partir de la firma. Documenta lo que la función espera, lo que devuelve y cualquier comportamiento relevante para la seguridad. Esto mejora la calidad de la revisión, reduce el uso indebido y garantiza un comportamiento predecible en toda la base de código.

Preguntas frecuentes

¿Tiene preguntas?

¿Debería comentar cada función de JavaScript?

No. Comenta las funciones cuyo comportamiento no sea obvio, especialmente al manejar entradas externas, datos sensibles o transformaciones complejas.

¿Qué debería explicar un buen comentario de función?

Intención, parámetros esperados, valores de retorno, efectos secundarios y cualquier suposición sobre datos confiables o validados.

¿Ayudan los comentarios en las auditorías de seguridad?

Sí. Los comentarios claros exponen suposiciones y restricciones, facilitando el razonamiento sobre los límites de validación y el posible uso indebido.

¿Pueden los comentarios reemplazar una buena nomenclatura?

No. Utilice nombres descriptivos y añada comentarios donde el nombramiento por sí solo no pueda expresar la intención o las restricciones subyacentes.

¿Afectan los comentarios al rendimiento en tiempo de ejecución?

No. Los comentarios se eliminan durante la ejecución y solo mejoran la comprensión del desarrollador y la seguridad del código.

Asegúrate ahora.

Proteja su código, la nube y el entorno de ejecución en un único sistema central.
Encuentre y corrija vulnerabilidades de forma rápida y automática.

No se requiere tarjeta de crédito | Resultados del escaneo en 32 segundos.