3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「とりあえずコメントアウトしておきます」という先輩の優しさが、3年後にシステムを破壊した話

3
Posted at

「いつか使うかもしれないから」という呪い

入社1年目の頃。不要になった機能のコードを消そうとした私に、先輩は優しく言いました。
「あ、それ完全に消さなくていいよ。いつかまた使うかもしれないから、とりあえずコメントアウトしといて。
なるほど、確かにまた仕様が戻るかもしれない。私は Cmd + / で200行のコードを緑色(コメント)に変え、PRをマージしました。

3年後、蘇るゾンビコード

3年が経過し、先輩は既に転職。私はリーダーになっていました。
ある日、システムのコアパッケージのメジャーアップデートを行いました。一通りテストも通り、本番へデプロイ。
数日後、別の機能改修のために、あの「3年前にコメントアウトした部分」を復活させることになりました。
「残しておいて良かった〜」と思いながらコメントアウトを外し、実行。
……動かない。
それどころか、見たこともないクリティカルなエラーを吐き、サーバープロセスがクラッシュしました。

コメントアウトされたコードは「腐る」

理由は簡単です。3年の間に、システム全体のアーキテクチャも、DBのスキーマも、ライブラリのバージョンも全て変わっていたのです。
コメントアウトされたコードは、「コンパイラも、Linterも、テストコードも、何もチェックしてくれない無法地帯」になります。
周りの世界が変わっていく中で、その緑色のテキストだけが3年前の姿のまま冷凍保存され、気づかないうちに完全に「腐って」いたのです。
復活させた瞬間、それは周囲の最新のコードと猛烈なコンフリクトを起こすゾンビコード
と化していました。

Gitを信じろ。「消す勇気」を持て

「いつか使うかもしれない」という不安は分かります。
しかし、私たちにはGitという最強のタイムマシンがあります。

❌ 「いつか使うかも」 → コメントアウトして放置
✅ 「いつか使うかも」 → 綺麗に削除してコミットし、コミットメッセージに理由を残す

本当に必要になったら、git log で検索して、当時のコミットから引っ張ってくればいいのです。(そしてそれを現在のアーキテクチャに合わせて書き直すのです)。
コードベースに残る大量のコメントアウトは、ノイズです。次にそのファイルを読む人の「これはなんだ?」という認知リソースを永遠に奪い続けます。
「消す」ことは、コードに対する最高のリファクタリングです。
恐れずに、Deleteキーを叩いてください。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?