「いつか使うかもしれないから」という呪い
入社1年目の頃。不要になった機能のコードを消そうとした私に、先輩は優しく言いました。
「あ、それ完全に消さなくていいよ。いつかまた使うかもしれないから、とりあえずコメントアウトしといて。」
なるほど、確かにまた仕様が戻るかもしれない。私は Cmd + / で200行のコードを緑色(コメント)に変え、PRをマージしました。
3年後、蘇るゾンビコード
3年が経過し、先輩は既に転職。私はリーダーになっていました。
ある日、システムのコアパッケージのメジャーアップデートを行いました。一通りテストも通り、本番へデプロイ。
数日後、別の機能改修のために、あの「3年前にコメントアウトした部分」を復活させることになりました。
「残しておいて良かった〜」と思いながらコメントアウトを外し、実行。
……動かない。
それどころか、見たこともないクリティカルなエラーを吐き、サーバープロセスがクラッシュしました。
コメントアウトされたコードは「腐る」
理由は簡単です。3年の間に、システム全体のアーキテクチャも、DBのスキーマも、ライブラリのバージョンも全て変わっていたのです。
コメントアウトされたコードは、「コンパイラも、Linterも、テストコードも、何もチェックしてくれない無法地帯」になります。
周りの世界が変わっていく中で、その緑色のテキストだけが3年前の姿のまま冷凍保存され、気づかないうちに完全に「腐って」いたのです。
復活させた瞬間、それは周囲の最新のコードと猛烈なコンフリクトを起こすゾンビコードと化していました。
Gitを信じろ。「消す勇気」を持て
「いつか使うかもしれない」という不安は分かります。
しかし、私たちにはGitという最強のタイムマシンがあります。
❌ 「いつか使うかも」 → コメントアウトして放置
✅ 「いつか使うかも」 → 綺麗に削除してコミットし、コミットメッセージに理由を残す
本当に必要になったら、git log で検索して、当時のコミットから引っ張ってくればいいのです。(そしてそれを現在のアーキテクチャに合わせて書き直すのです)。
コードベースに残る大量のコメントアウトは、ノイズです。次にそのファイルを読む人の「これはなんだ?」という認知リソースを永遠に奪い続けます。
「消す」ことは、コードに対する最高のリファクタリングです。
恐れずに、Deleteキーを叩いてください。