Regra
Remover pendentes TODO/FIXME comentários
Não resolvidos TODO e FIXME comentários indicam
incompleto trabalho que pode acumular ao tempo.
Acompanhe problemas em o seu problema rastreador em vez de de deixar em no código.
Idiomas suportados: 45+Introdução
Comentários TODO e FIXME começam como lembretes úteis, mas rapidamente se tornam elementos permanentes na base de código. O que era para ser uma nota temporária se torna um sinal de alerta que todos ignoram. Esses comentários indicam trabalho inacabado, decisões adiadas ou problemas conhecidos que ninguém acompanhou adequadamente. Quando você entrega código com comentários TODO, você está entregando o reconhecimento de que algo não está certo, sem nenhum plano para corrigi-lo.
Por que isso importa
Manutenibilidade do código: Comentários TODO criam ambiguidade sobre a prontidão e completude do código. Novos membros da equipe não sabem se esses comentários representam problemas urgentes ou anotações antigas que ninguém mais se importa. Quanto mais TODOs se acumulam, menos seriamente são levados, criando um efeito de janelas quebradas onde os padrões de qualidade se deterioram.
Rastreamento de dívida técnica: Problemas ocultos em comentários não são priorizados, atribuídos ou rastreados. Seu sistema de gerenciamento de projetos mostra que tudo está completo, enquanto a base de código contém dezenas de notas "corrigir isso depois". Sem o rastreamento adequado, problemas importantes são esquecidos até que causem problemas em produção.
Implicações de segurança: Comentários TODO às vezes marcam implementações de segurança incompletas ou vulnerabilidades conhecidas. Um comentário como "TODO: adicionar verificação de autenticação" em código de produção significa que você enviou uma falha de segurança com total conhecimento. Esses marcadores tornam mais fácil para atacantes que revisam seu código encontrarem pontos fracos.
Exemplos de código
❌ Não-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 que está errado: Três problemas críticos (detecção de fraude, concorrência, logging) estão marcados, mas não resolvidos, indicando que esta função foi entregue incompleta. Esses comentários documentam problemas conhecidos sem qualquer rastreamento ou cronograma para corrigi-los.
✅ Compatível:
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 que isso importa: Todos os problemas previamente marcados foram resolvidos. A detecção de fraude está implementada, as transações de banco de dados lidam com a concorrência e o log de auditoria rastreia todos os pagamentos. O código está completo, sem comentários apologéticos sobre o que está faltando.
Conclusão
Remova comentários TODO e FIXME antes de fazer merge do código para produção. Se o trabalho estiver incompleto, finalize-o ou crie issues rastreadas no seu sistema de gerenciamento de projetos com prioridade e atribuição adequadas. Comentários no código são invisíveis para o planejamento do projeto e fazem com que sua base de código pareça perpetuamente inacabada.
.avif)
