いつか作ります RSSフィード

2009-03-03

コメントアウト・コードは是か非か 12:38 コメントアウト・コードは是か非か - いつか作ります を含むブックマーク はてなブックマーク - コメントアウト・コードは是か非か - いつか作ります コメントアウト・コードは是か非か - いつか作ります のブックマークコメント

コードのコメントアウトが正当化される条件を考えてみた。

ちなみに私は割とザクザク削ってしまう方で、あまりコメントアウト・コードは残さない。理由はマイ美的感覚がそれを許さないのと、不要な行が残ってるとコードを読む際に邪魔だから。

コメントとして残す。

  • 「どうしてここはこう書かれているのか」を示すために、選ばれなかった選択肢であるコードと、選択の理由を残す。
  • どの選択肢を取るかが確定していないと思われる場合に、「こうなるかもしれない」という可能性を示すために残す。これもやはり「意図」を残すという側面が強い。

使われなかったコードの方に戻す際の作業量が多いから、という理由でコメントアウトコードを残すのは無駄。バージョン管理システムに頼れば、その作業量は多くない。残すとしても、代替コードがどのリビジョンにあるかを書いておけば事足りる。

例えば、普通なら (a+b)%c と書くところを、 a+b で桁溢れする可能性を考え ( ( a%c ) + ( b%c ) ) %c と書いた、とかいう場合、 (a+b)%c をコメントアウトして、「桁溢れしそうなんでこっちにしとく」とでもコメントしておいた方が読みやすい。

「すぐに戻す」という意思表示

逆に、1,2行の記述であっても、すぐ書き直すことがありえるような状況ならばコメントアウト。まあ普通に作業効率がいいし*1。そこから飛躍させると、すぐに直せる位置にコメントアウト・コードが残っているという事は、つまりそれを書いた人が、その方が作業効率が高いと、つまり「すぐにこっちのコードに変更する可能性が高い」と考えていたという事実を示唆する*2

つまり、コードを読む人間に「仕様上の未確定事項がまだその辺に埋まっている可能性が高い」という情報が伝わる。

ただし、そのようなaltの存在はあまり長期間許されるものではない。できればさっさと削るべき。あるいは何らかの理由でずっと残したいなら(例えばメンテナンス用のコードとか)、その部分を別クラスなり(Strategyパターン使うとか)に切り分けて、代替選択肢のひとつである事を明示すべきだ。

*1:PHPやRubyなどのLLで作業する際の話なので、C++のような重量級言語だと話が違うのかも

*2:単にバージョン管理システムを使えていないという可能性もあるわけだが、とりあえず忘れる

新着エントリは上に追加。コメントは「はてなユーザのみ」、公開設定はパブリック (だれでも閲覧ができます)。