Aikido

Cómo eliminar comentarios TODO y FIXME persistentes de tu base de código

Mantenibilidad

Regla
Eliminar pendientes TODO/FIXME comentarios
Sin resolver TODO y FIXME comentarios indican
incompleto trabajo que puede acumularse con tiempo.
Seguimiento los problemas en su problema seguimiento en lugar de de dejarlos en en código.

Idiomas admitidos: 45+

Introducción

Los comentarios TODO y FIXME comienzan como recordatorios útiles, pero rápidamente se convierten en elementos permanentes en la base de código. Lo que se pretendía como una nota temporal se convierte en una señal de advertencia que todo el mundo ignora. Estos comentarios indican trabajo inacabado, decisiones aplazadas o problemas conocidos que nadie siguió correctamente. Cuando se entrega código con comentarios TODO, se está entregando un reconocimiento de que algo no está bien, sin ningún plan para solucionarlo.

Por qué es importante

Mantenibilidad del código: Los comentarios TODO generan ambigüedad sobre la preparación y completitud del código. Los nuevos miembros del equipo no saben si estos comentarios representan problemas urgentes o notas de hace años a las que ya nadie presta atención. Cuantos más TODOs se acumulan, menos en serio se los toma la gente, creando un efecto de ventanas rotas donde los estándares de calidad se erosionan.

Seguimiento de la deuda técnica: Los problemas ocultos en los comentarios no se priorizan, asignan ni rastrean. Su sistema de gestión de proyectos muestra que todo está completo, mientras que la base de código contiene docenas de notas de "arreglar esto más tarde". Sin un seguimiento adecuado, los problemas importantes se olvidan hasta que causan problemas en producción.

Implicaciones de seguridad: Los comentarios TODO a veces marcan implementaciones de seguridad incompletas o vulnerabilidades conocidas. Un comentario como "TODO: añadir comprobación de autenticación" en código de producción significa que se ha enviado una brecha de seguridad con pleno conocimiento. Estos marcadores facilitan a los atacantes que revisan su código encontrar puntos débiles.

Ejemplos de código

❌ No conforme:

async function processPayment(userId, amount) {
    // TODO: Add fraud detection before processing
    // FIXME: This doesn't handle concurrent payments

    const user = await db.users.findById(userId);

    if (user.balance < amount) {
        throw new Error('Insufficient funds');
    }

    // TODO: Add transaction logging
    user.balance -= amount;
    await user.save();

    return { success: true };
}
 

Por qué está mal: Tres problemas críticos (detección de fraude, concurrencia, registro) están marcados pero no resueltos, lo que indica que esta función se entregó incompleta. Estos comentarios documentan problemas conocidos sin ningún seguimiento o cronograma para solucionarlos.

✅ Conforme:

async function processPayment(userId, amount) {
    await fraudDetection.check(userId, amount);

    return await db.transaction(async (trx) => {
        const user = await trx.users
            .findById(userId)
            .forUpdate();

        if (user.balance < amount) {
            throw new Error('Insufficient funds');
        }

        user.balance -= amount;
        await user.save();

        await trx.auditLog.create({
            userId,
            action: 'payment',
            amount,
            timestamp: new Date()
        });

        return { success: true };
    });
}

Por qué esto es importante: Todos los problemas marcados anteriormente están resueltos. La detección de fraude está implementada, las transacciones de base de datos gestionan la concurrencia y el registro de auditoría rastrea todos los pagos. El código está completo sin comentarios que se disculpen por lo que falta.

Conclusión

Eliminar los comentarios TODO y FIXME antes de fusionar el código a producción. Si el trabajo está incompleto, termínelo o cree incidencias en su sistema de gestión de proyectos con la prioridad y asignación adecuadas. Los comentarios en el código son invisibles para la planificación del proyecto y hacen que su base de código parezca perpetuamente inacabada.

Preguntas frecuentes

¿Tiene preguntas?

¿Qué ocurre si realmente necesito marcar algo para más tarde?

Crea una incidencia en tu sistema de seguimiento (Jira, GitHub Issues, Linear) con contexto, prioridad y asignación. Si es necesario, enlaza el número de la incidencia en un comentario: // Ver incidencia #1234 para la refactorización planificada. Esto hace que el trabajo sea visible para la gestión de proyectos y asegura que se priorice correctamente.

¿Qué ocurre si realmente necesito marcar algo para más tarde?

Crea una incidencia en tu sistema de seguimiento (Jira, GitHub Issues, Linear) con contexto, prioridad y asignación. Si es necesario, enlaza el número de la incidencia en un comentario: // Ver incidencia #1234 para la refactorización planificada. Esto hace que el trabajo sea visible para la gestión de proyectos y asegura que se priorice correctamente.

¿Existen usos aceptables para los comentarios TODO?

En las solicitudes de extracción (pull requests) en borrador o ramas de características que aún no se han fusionado, los comentarios TODO ayudan a rastrear el trabajo incompleto durante el desarrollo. Antes de fusionar a la rama principal (main), completa el trabajo o convierte los TODO en incidencias rastreadas. Nunca fusiones comentarios TODO en ramas de producción.

¿Cómo gestiono los TODOs en código legado?

Audítalos por lotes. Muchos TODOs antiguos están obsoletos o ya han sido corregidos. Para los problemas válidos, crea tickets y elimina los comentarios. Establece una política para que el nuevo código no pueda añadir TODOs. Esto evita la acumulación mientras trabajas en la deuda técnica existente.

¿Qué hay de los comentarios HACK u OPTIMIZE?

Estos sufren los mismos problemas que los comentarios TODO. HACK indica código del que te avergüenzas pero que se ha lanzado de todos modos. OPTIMIZE sugiere una preocupación prematura por el rendimiento. O bien corrige el código o acéptalo tal cual sin comentarios de disculpa. Documenta los requisitos de rendimiento reales en los tickets, no en los comentarios 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.