Aikido

¿Por qué se debería eliminar el código comentado de la base de código?

Legibilidad

Regla
Eliminar comentado código bloques

código código genera ruido, se vuelve obsoleto 
y pertenece en versión de , no el código.

Introducción

El código comentado se acumula cuando los desarrolladores no están seguros de si necesitarán la lógica antigua más adelante. Alguien comenta una función «por si acaso» en lugar de eliminarla, y esta permanece allí para siempre. Nadie sabe si este código sigue funcionando, por qué se deshabilitó o si es seguro eliminarlo. La base de código se llena de fantasmas de implementaciones pasadas que distraen de la comprensión de lo que realmente se ejecuta en producción.

Por qué es importante

Mantenibilidad del código: El código comentado obliga a los lectores a filtrar mentalmente lo que es real de lo que está inactivo. Durante la revisión del código, no se puede saber si estos bloques son experimentos temporales, opciones importantes de reversión o restos olvidados de hace años. Este ruido dificulta la comprensión de la lógica real, la búsqueda de secciones de código relevantes y la revisión significativa de los cambios.

Implicaciones de seguridad: Las comprobaciones de autenticación, la lógica de validación o las características de seguridad comentadas revelan que estas protecciones existieron, pero fueron deshabilitadas deliberadamente. Si el código comentado contiene credenciales, claves de API o URL internas, está enviando esos datos sensibles en texto plano. Los atacantes que revisan su base de código ven exactamente qué medidas de seguridad consideró y eliminó.

Confusión en el control de versiones: Los diffs de Git se llenan de bloques comentados que en realidad no están cambiando. Cuando necesita rastrear cuándo cambió la lógica o por qué una característica funciona de cierta manera, las alternativas comentadas ocultan el historial real. La búsqueda en la base de código devuelve coincidencias en código muerto, lo que hace perder tiempo investigando rutas que no se ejecutan.

Ejemplos de código

❌ No conforme:

async function createUser(userData) {
    // const hashedPassword = await bcrypt.hash(userData.password, 10);

    const user = await db.users.create({
        email: userData.email,
        password: userData.password,
        // password: hashedPassword,
        role: userData.role || 'user'
    });

    // await sendWelcomeEmail(user.email);
    // await notifyAdmins(user);

    // Old validation approach
    // if (!isValidEmail(user.email)) {
    //     throw new Error('Invalid email');
    // }

    return user;
}

Por qué está mal: El hash de contraseñas comentado revela que las contraseñas se almacenan en texto plano, una vulnerabilidad de seguridad crítica. Nadie sabe si el correo electrónico de bienvenida y la notificación de administrador deben estar habilitados, y la antigua validación sugiere que la validación de correo electrónico podría faltar.

✅ Conforme:

async function createUser(userData) {
    if (!isValidEmail(userData.email)) {
        throw new Error('Invalid email');
    }

    const hashedPassword = await bcrypt.hash(userData.password, 10);

    const user = await db.users.create({
        email: userData.email,
        password: hashedPassword,
        role: userData.role || 'user'
    });

    await sendWelcomeEmail(user.email);
    await notifyAdmins(user);

    return user;
}

Por qué es importante: La función es clara y completa, mostrando exactamente lo que se ejecuta en producción. La validación de correo electrónico se ejecuta primero, las contraseñas se hashean correctamente y todas las notificaciones se envían sin ambigüedad sobre lo que está habilitado.

Conclusión

Elimina el código en lugar de comentarlo. Tu sistema de control de versiones conserva cada línea escrita, accesible a través de git log y git blame cuando lo necesite. Mantener código comentado en el repositorio solo genera ruido que oculta la lógica real y dificulta la navegación por su base de código.

Preguntas frecuentes

¿Tiene preguntas?

¿Qué ocurre si necesito la implementación antigua para un rollback?

Utilice feature flags o ramas de control de versiones, no comentarios. Si pudiera revertir a la lógica antigua, impleméntela detrás de un feature flag que pueda activar/desactivar. Para cambios permanentes, elimine el código antiguo y confíe en el historial de Git. Siempre puede recuperar código eliminado con git log -p o git show cuando sea necesario.

¿Cómo gestiono el código experimental durante el desarrollo?

Mantén los experimentos en ramas separadas o utiliza feature flags. Si estás probando dos enfoques, crea una rama para cada uno o usa un flag de configuración para alternar entre ellos. El código comentado en las ramas principales sugiere que no estás seguro de lo que debería estar en producción, lo cual es un problema de planificación, no de control de versiones.

¿Qué hay de deshabilitar código temporalmente durante la depuración?

Está bien para sesiones de depuración locales, pero nunca lo subas. Usa git add -p para revisar y excluir el código de depuración comentado antes de hacer commit. Si necesitas deshabilitar código temporalmente en todo el equipo, usa feature flags o configuración en lugar de comentarios.

¿Debería eliminar también las notas explicativas comentadas?

No, esta regla se dirige a bloques de código comentados, no a comentarios de documentación. Los comentarios explicativos que describen por qué o cómo funciona algo son valiosos. El problema son los bloques de código ejecutable comentado que pueden o no ser relevantes ya.

¿Qué ocurre si el código comentado documenta enfoques de implementación antiguos?

Documenta el enfoque en un comentario que lo describa, no conservando código muerto. Escribe "anteriormente se usaba el enfoque X, se cambió a Y porque Z" en lugar de mantener ambas implementaciones comentadas. El contexto histórico pertenece a los mensajes de commit y a los documentos de diseño, no a bloques de código inactivos.

Asegura tu plataforma ahora

Protege tu código, la nube y el entorno de ejecución en un único sistema central.
Encuentra y corrije vulnerabilidades de forma rápida y automática.

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