Regola
Rimuovi i commenti TODO/FIXME rimasti
I commenti TODO e FIXME irrisolti indicano
un lavoro incompleto che può accumularsi nel tempo.
Traccia i problemi nel tuo sistema di tracciamento invece di lasciarli nel codice.
Linguaggi supportati: 45+Introduzione
I commenti TODO e FIXME nascono come promemoria utili, ma diventano rapidamente elementi fissi nel codebase. Quella che doveva essere una nota temporanea si trasforma in un segnale di avvertimento che tutti finiscono per ignorare. Questi commenti indicano lavoro non completato, decisioni rimandate o problemi noti che nessuno ha tracciato correttamente. Quando rilasci del codice con commenti TODO, stai ammettendo che qualcosa non va, senza avere alcun piano per risolverlo.
Perché è importante
Manutenibilità del codice: I commenti TODO introducono ambiguità riguardo alla prontezza e alla completezza del codice. I nuovi membri del team non sanno se questi commenti rappresentino problemi urgenti o note di anni fa di cui a nessuno importa più. Più i TODO si accumulano, meno vengono presi sul serio, creando un effetto finestre rotte che erode gli standard di qualità.
Tracciamento del debito tecnico: I problemi nascosti nei commenti non vengono prioritizzati, assegnati o tracciati. Il tuo sistema di gestione dei progetti mostra che tutto è completo, mentre il codice contiene dozzine di note del tipo "da sistemare in seguito". Senza un tracciamento adeguato, i problemi importanti vengono dimenticati finché non causano problemi in produzione.
Implicazioni di sicurezza: I commenti TODO a volte segnalano implementazioni di sicurezza incomplete o vulnerabilità note. Un commento come "TODO: aggiungi controllo di autenticazione" nel codice di produzione significa che hai rilasciato una falla di sicurezza a pieno titolo. Questi marcatori rendono più facile per gli aggressori che analizzano il codice individuare i punti deboli.
Esempi di codice
❌ Non 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 };
}
Perché è sbagliato: Tre problemi critici (rilevamento frodi, concorrenza, logging) sono segnalati ma non risolti, il che indica che questa funzione è stata rilasciata incompleta. Questi commenti documentano problemi noti senza alcun tracciamento o tempistica per risolverli.
✅ 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 };
});
}
Perché questo è importante: Tutti i problemi precedentemente segnalati sono stati risolti. Il rilevamento delle frodi è implementato, le transazioni del database gestiscono la concorrenza e il logging di audit traccia tutti i pagamenti. Il codice è completo, senza commenti di scusa su ciò che manca.
Conclusione
Rimuovi i commenti TODO e FIXME prima di effettuare il merge del codice in produzione. Se il lavoro è incompleto, completalo o crea ticket tracciati nel tuo sistema di gestione dei progetti con priorità e assegnazione adeguate. I commenti nel codice sono invisibili alla pianificazione del progetto e fanno sembrare il tuo codebase perennemente incompiuto.

