ルール
削除 残存する TODO/FIXME コメント
未解決 TODO および 修正待ち コメント は
未完成 作業 その できる 蓄積する 時間 時間をかけて
追跡 問題を を あなたの イシュー トラッカー 代わりに 代わりに 放置する それらを コード コードに
サポート言語: 45+はじめに
TODOおよびFIXMEコメントは、役立つリマインダーとして始まりますが、コードベースにすぐに永続的なものとして定着します。一時的なメモとして意図されていたものが、誰もが無視する警告サインとなってしまいます。これらのコメントは、未完了の作業、延期された決定、または誰も適切に追跡しなかった既知の問題を示しています。TODOコメントを含むコードを出荷する場合、それは、何かが正しくないことを認識しながら、修正計画なしに出荷していることになります。
なぜ重要なのか
コードの保守性:TODOコメントは、コードの準備状況と完全性について曖昧さを生み出します。新しいチームメンバーは、これらのコメントが緊急の問題を表しているのか、それとも誰も気にしなくなった何年も前のメモなのかを知りません。TODOが蓄積すればするほど、誰もそれらを真剣に受け止めなくなり、品質基準が低下する割れ窓理論の効果を生み出します。
技術的負債の追跡: コメントに隠された問題は、優先順位付け、割り当て、または追跡されません。プロジェクト管理システムではすべてが完了していると表示されていても、コードベースには「後で修正」というメモが多数含まれています。適切な追跡がなければ、重要な問題は本番環境で問題を引き起こすまで忘れ去られてしまいます。
セキュリティ上の影響: TODOコメントは、不完全なセキュリティ実装や既知の脆弱性を示す場合があります。本番コードに「TODO: add authentication check」のようなコメントがある場合、それはセキュリティホールを完全に認識した上で出荷したことを意味します。これらのマーカーは、コードをレビューする攻撃者が弱点を見つけやすくします。
コード例
❌ 非準拠:
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 };
}
誤っている理由: 3つの重要な問題(不正検出、並行処理、ロギング)がマークされているにもかかわらず解決されておらず、この関数が不完全な状態で出荷されたことを示しています。これらのコメントは既知の問題を文書化していますが、それらを修正するための追跡やタイムラインはありません。
✅ 準拠済み:
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 };
});
}
これが重要な理由:以前にマークされたすべての問題は解決されています。不正検出が実装され、データベーストランザクションは並行処理を扱い、監査ロギングはすべての支払いを追跡します。コードは、不足しているものに関する弁解的なコメントなしに完結しています。
まとめ
コードを本番環境にマージする前に、TODOおよびFIXMEコメントを削除します。作業が未完了の場合は、完了させるか、適切な優先順位と担当者を割り当ててプロジェクト管理システムで追跡可能な課題を作成してください。コード内のコメントはプロジェクト計画からは見えず、コードベースが常に未完成であるかのように見せてしまいます。

