Aikido

Wie man verbleibende TODO- und FIXME-Kommentare aus der Codebasis entfernt

Wartbarkeit

Regel
Entfernen verbleibende TODO/FIXME Kommentare
Ungelöste TODO und FIXME Kommentare weisen darauf hin
unvollständig Arbeit , dass sich sich über Zeit
Verfolgen Probleme in Ihrer Problem Tracker statt statt sie sie im Code zu belassen.

Unterstützte Sprachen: 45+

Einleitung

TODO- und FIXME-Kommentare beginnen als hilfreiche Erinnerungen, werden aber schnell zu dauerhaften Bestandteilen der Codebasis. Was als temporäre Notiz gedacht war, wird zu einem Warnzeichen, das jeder ignoriert. Diese Kommentare weisen auf unvollendete Arbeit, aufgeschobene Entscheidungen oder bekannte Probleme hin, die niemand richtig nachverfolgt hat. Wenn Sie Code mit TODO-Kommentaren ausliefern, bestätigen Sie damit, dass etwas nicht stimmt, ohne einen Plan zur Behebung zu haben.

Warum es wichtig ist

Code-Wartbarkeit: TODO-Kommentare schaffen Unklarheit über die Code-Bereitschaft und Vollständigkeit. Neue Teammitglieder wissen nicht, ob diese Kommentare dringende Probleme oder jahrealte Notizen darstellen, die niemanden mehr interessieren. Je mehr TODOs sich ansammeln, desto weniger ernst nimmt sie jemand, was einen Broken-Windows-Effekt erzeugt, bei dem die Qualitätsstandards erodieren.

Verfolgung technischer Schulden: In Kommentaren versteckte Probleme werden nicht priorisiert, zugewiesen oder verfolgt. Ihr Projektmanagementsystem zeigt an, dass alles abgeschlossen ist, während die Codebasis Dutzende von „später beheben“-Notizen enthält. Ohne ordnungsgemäße Verfolgung geraten wichtige Probleme in Vergessenheit, bis sie zu Produktionsproblemen führen.

Auswirkungen auf die Sicherheit: TODO-Kommentare kennzeichnen manchmal unvollständige Sicherheitsimplementierungen oder bekannte Schwachstellen. Ein Kommentar wie „TODO: add authentication check“ im Produktionscode bedeutet, dass Sie wissentlich eine Sicherheitslücke ausgeliefert haben. Diese Marker erleichtern es Angreifern, die Ihren Code überprüfen, Schwachstellen zu finden.

Code-Beispiele

❌ Nicht konform:

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 };
}
 

Warum es falsch ist: Drei kritische Probleme (Betrugserkennung, Parallelität, Protokollierung) sind markiert, aber nicht behoben, was darauf hindeutet, dass diese Funktion unvollständig ausgeliefert wurde. Diese Kommentare dokumentieren bekannte Probleme ohne jegliche Nachverfolgung oder Zeitplan zu deren Behebung.

✅ Konform:

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 };
    });
}

Warum das wichtig ist: Alle zuvor markierten Probleme sind behoben. Betrugserkennung ist implementiert, Datenbanktransaktionen handhaben Parallelität, und Audit-Logging verfolgt alle Zahlungen. Der Code ist vollständig, ohne entschuldigende Kommentare darüber, was fehlt.

Fazit

Entfernen Sie TODO- und FIXME-Kommentare, bevor Sie Code in die Produktion mergen. Wenn die Arbeit unvollständig ist, schließen Sie sie ab oder erstellen Sie nachverfolgte Issues in Ihrem Projektmanagementsystem mit der richtigen Priorität und Zuweisung. Kommentare im Code sind für die Projektplanung unsichtbar und lassen Ihre Codebasis dauerhaft unvollendet erscheinen.

FAQs

Haben Sie Fragen?

Was, wenn ich etwas tatsächlich für später markieren muss?

Erstellen Sie ein Issue in Ihrem Tracker (Jira, GitHub Issues, Linear) mit Kontext, Priorität und Zuweisung. Verlinken Sie die Issue-Nummer bei Bedarf in einem Kommentar: // Siehe Issue #1234 für geplante Refaktorierung. Dies macht die Arbeit für das Projektmanagement sichtbar und stellt sicher, dass sie richtig priorisiert wird.

Was, wenn ich etwas tatsächlich für später markieren muss?

Erstellen Sie ein Issue in Ihrem Tracker (Jira, GitHub Issues, Linear) mit Kontext, Priorität und Zuweisung. Verlinken Sie die Issue-Nummer bei Bedarf in einem Kommentar: // Siehe Issue #1234 für geplante Refaktorierung. Dies macht die Arbeit für das Projektmanagement sichtbar und stellt sicher, dass sie richtig priorisiert wird.

Gibt es akzeptable Verwendungen für TODO-Kommentare?

In Entwurfs-Pull-Requests oder Feature-Branches, die noch nicht zusammengeführt wurden, helfen TODO-Kommentare, unvollständige Arbeiten während der Entwicklung zu verfolgen. Vor dem Mergen in den Main-Branch, schließen Sie entweder die Arbeit ab oder wandeln Sie TODOs in verfolgte Issues um. Mergen Sie niemals TODO-Kommentare in Produktions-Branches.

Wie gehe ich mit TODOs in Legacy-Code um?

Auditieren Sie sie in Batches. Viele alte TODOs sind veraltet oder bereits behoben. Erstellen Sie für gültige Probleme Tickets und entfernen Sie die Kommentare. Legen Sie eine Richtlinie fest, dass neuer Code keine TODOs hinzufügen darf. Dies verhindert eine Anhäufung, während Sie bestehende technische Schulden abbauen.

Was ist mit HACK- oder OPTIMIZE-Kommentaren?

Diese leiden unter den gleichen Problemen wie TODO-Kommentare. HACK kennzeichnet Code, für den man sich schämt, der aber trotzdem ausgeliefert wurde. OPTIMIZE deutet auf eine verfrühte Sorge um die Leistung hin. Entweder den Code beheben oder ihn so akzeptieren, wie er ist, ohne entschuldigende Kommentare. Dokumentieren Sie tatsächliche Leistungsanforderungen in Tickets, nicht in Code-Kommentaren.

Werden Sie jetzt sicher.

Sichern Sie Ihren Code, Ihre Cloud und Ihre Laufzeit in einem zentralen System.
Finden und beheben Sie Schwachstellen schnell und automatisch.

Keine Kreditkarte erforderlich | Scan-Ergebnisse in 32 Sek.