ルール
コメントアウトされた コード ブロックを 削除する
コメントアウトされた コードは ノイズを 発生させ、 古くなり、 コードベースではなく
バージョン 管理の 履歴に 属します。はじめに
開発者が古いロジックが後で必要になるかどうかわからない場合、コメントアウトされたコードが蓄積されます。誰かが「念のため」関数をコメントアウトし、削除せずにそのままにしておくと、それが永久に残ります。このコードがまだ機能するか、なぜ無効にされたのか、削除しても安全なのかは誰にもわかりません。コードベースは過去の実装の残骸で埋め尽くされ、実際に本番環境で実行されている内容の理解を妨げます。
なぜ重要なのか
コードの保守性:コメントアウトされたコードは、読者に、実際に機能している部分と休止している部分を頭の中で区別することを強います。コードレビュー中に、これらのブロックが一時的な実験なのか、重要なロールバックオプションなのか、あるいは何年も前に忘れ去られた残骸なのかを判断することは困難です。このノイズは、実際のロジックを理解し、関連するコードセクションを見つけ、変更を意味のある形でレビューすることをより困難にします。
Security implications: コメントアウトされた認証チェック、検証ロジック、またはセキュリティ機能は、これらの保護が存在したが意図的に無効にされたことを示します。コメントアウトされたコードに認証情報、APIキー、または内部URLが含まれている場合、その機密データはプレーンテキストで出荷されています。コードベースをレビューする攻撃者は、検討し削除したセキュリティ対策を正確に把握します。
Version control confusion: Gitの差分は、実際には変更されていないコメントアウトされたブロックで乱雑になります。ロジックがいつ変更されたか、または機能が特定の方法で動作する理由を追跡する必要がある場合、コメントアウトされた代替案が実際の履歴を不明瞭にします。コードベースを検索すると、デッドコード内で一致が返され、実行されないパスを調査する時間を無駄にします。
コード例
❌ 非準拠:
async function createUser(userData) {
// const hashedPassword = await bcrypt.hash(userData.password, 10);
const user = await db.users.create({
email: userData.email,
password: userData.password,
// password: hashedPassword,
role: userData.role || 'user'
});
// await sendWelcomeEmail(user.email);
// await notifyAdmins(user);
// Old validation approach
// if (!isValidEmail(user.email)) {
// throw new Error('Invalid email');
// }
return user;
}
なぜ問題なのか: コメントアウトされたパスワードハッシュは、パスワードがプレーンテキストで保存されていることを示しており、これは重大なセキュリティ脆弱性です。ウェルカムメールと管理者通知を有効にするべきかどうかが不明であり、古い検証は、メール検証が欠落している可能性を示唆しています。
✅ 準拠済み:
async function createUser(userData) {
if (!isValidEmail(userData.email)) {
throw new Error('Invalid email');
}
const hashedPassword = await bcrypt.hash(userData.password, 10);
const user = await db.users.create({
email: userData.email,
password: hashedPassword,
role: userData.role || 'user'
});
await sendWelcomeEmail(user.email);
await notifyAdmins(user);
return user;
}
これが重要な理由:この関数は明確かつ完全であり、本番環境で何が実行されるかを正確に示しています。メール検証が最初に実行され、パスワードは適切にハッシュ化され、有効になっているものについて曖昧さなくすべての通知が送信されます。
まとめ
コードはコメントアウトするのではなく、削除してください。バージョン管理システムは、これまでに書かれたすべての行を保持しており、以下を通じてアクセスできます。 git log そして git blame 必要なときに。リポジトリにコメントアウトされたコードを残しておくことは、実際のロジックを不明瞭にし、コードベースのナビゲートを困難にするノイズを生み出すだけです。

