プログラムの一部をコメント・アウトするということは、プログラマなら一度はやっていると思う。コメント・アウト(無効化する)する時ってどういうときだろう。
- 人が書いたコードをそっくり置き換えれるとき
- 明らかなバグだと思えるとき
- 将来つかえるかもと思ったとき
その他にもありそう。
そんなこんなで、なぜ、「明らかに不要」なコードを残すのだろう。
- 1, の場合
- a) 書いた人に遠慮してる
b) いつでも元にもどせるように - 2, の場合
- a) ここにバグがあったぞという証拠として
b) バグだと確信できないで、とりあえず残す - 3, の場合
- a) おもしろそうなコードなので残しておきたい
b) 楽しい技だ
主観的なのでまたもや他にもでてきそうだが。
では、コメント・アウトされたコードを見る側で考えてみる
- コメント・アウトされたコードを読むとプログラムの歴史が見えるなぁ
- コメント・アウトされたコードを復活できるかも
- 前任者の考えが読める
- あぁそうだ。まちがいなくこれはバグだ。このプログラムはバグFIXできてるね
これも読む人千差万別。
さて、ではコメント・アウトされたコードが無いコードを目の前にした時はどう感じるか。
- プログラムの歴史がみえないなぁ
- 過去に書いたコードが無いから、参考になるコードがないよ
- 前任者は何を云わんや
- ああぁ。どっかにバグがあったとおもったのだけれど
さて、ここまできて非常におかしなことになってると思う。
- 1, は、
- そんなこと考えながらプログラミングする人は居ないと信じたい
- 2, は、
- 参考になるコードは自分が編集しているファイル上になくてもいいよね
- 3, なんて、
- これから編集するコードの結果は前任者には関係ないし(近くにいるとして)
- 4, いたっては
- えっ!バグが無いことはいいことでないの?
こう考えると、コメント・アウトされたコードってプログラミングの邪魔になっているとしか思えない。プログラマの実現すべきはテストを通って仕様を満たすプログラムだ。その実現を目指して書くのだから、昔のことや、バグあっただの無かっただのは関係ないし、さらに、前任者にこれから実現すべきことを説明する余裕があるだろうか。唯一役に立ちそうな過去のコードやテクニックを参考にするという目的は、他の方法で実現が十分可能だ。
そこで、プログラマは自分が抱える本当の目的を達成するために、いつもコメント・アウトされたコードは削除してコードを極力きれいにしておくのがよいと思う。特にプログラム編集者が複数になり、さらに、何度も何度も編集を繰り返す場合は。そして以下のようなメリットを享受することができるのではないか。
- プログラムを読むとき、実際に動くコードの流れに集中できる。
- 改訂を入れ終えたとき、再度仕様と照らし合わせてコードを読む。その時にコメント・アウトコードに目移りしない。
- ある関数がテストに通ったとき、その関数には完全にバグが無いことと、バグの痕跡さえも無いこと、復活するコードのかけらさえなく。唯一自分が改訂したコードがあり、それが動くと証明できる。
- なにより、改訂対象となったコードの全てを掌握した気持ちになれるし、結果、そんなアナタの書いたコードは一辺の曇もなく明解で、見た目もきれいであるに違いに無い
そして、結局のところプログラムの質を維持することに貢献し、結果、ユーザに喜ばれる。これはプログラマにとっても喜ばしいことだと思うのだが。(※)
(※)ほぼ自戒に近い。誘惑に負けず、きれいなコードが書けるようになりたい。