プログラムにコメントは必要か

20世紀なら「コメントを書くのが当たり前」だったと思うのですが、最近は「コメントは不要。むしろ邪魔である」と主張する人が増えてきたように感じます。

これはいったいなぜなのか、そしてコメントは本当にいらないのか。

アセンブラコードなんて、コメントなければやってられない

16進数で書かれた数値がプログラム本体ですが、これだけでパッと何がどう動くかわかる人はほとんどいなかったでしょう。私なら無理です。
こんな言語のプログラミングであれば、コメントは必須じゃないでしょうか。

幸せなことに、現在一般的にプログラマーと言うと、このようなコードプログラミングを必須とする職業は影を潜めました。

今でも当然携わってる方々はいます。素晴らしい仕事ぶりに感謝です。

初期の C 時代には、制限があった

PC と呼ばれる前のパソコンの時代、パソコンそのもののスペックが低いため、変数名やら引数の数に制限があったりしました。英字8文字までとか、引数4つまでとか…。

この不自由な制限により、プログラムを見ただけで「何をどうしたいのか」が一目でわかるとは言い難い状況でした。「int a; はメモリ節約のためだから!」という意見はさすがにツッコミが入りましたが。

プログラムを見ただけでわからない部分を、補うためのコメント。
この時代においても大事なものでした。

アセンブラのように一行一行にコメントを入れていた人もいましたが、さすがにそれはやりすぎだろうと心の中で思ってました。

現在の開発環境

過去に比べればメモリも、処理速度も、信じられないくらいにスケールアップした結果、初期の C 時代のような制限はほぼなくなりました。

Time.procTime なんて省略した名前にせず Time.realtimeSinceStartup と記述してあれば「起動からの経過時間かな」とすぐ想像がつくようになります。

ソースコードを眺めるだけで「なんとなく何してるかわかる」ようになります。
こうなってくると、「人の書いたコメントの方がわからない」可能性が出てきます。

コメントの問題:プログラムと違って自由すぎる

自由な言葉で書けるということは、日本語が変だったり、言葉足らずの可能性を考慮する必要があります
プログラムが綺麗にかけるからって、日本語が上手とは限りません。

プログラム言語も自由裁量の部分はありますが、人間の言葉よりは制限が強く、そもそも正しく書かなければプログラムが動作しません。
対してコメントの場合「あれやっといった」とだけ書かれていてもエラーにはなりません。

規模感の大きいプロジェクトになると、プログラムの自由裁量部分すら敬遠する意見が出てきます。Laravel とか、ちょいちょいそんな話を聞きます。

コメントの問題:度重なるバージョンアップにコメントがついてこれない

バージョン1.00では正しかったコメントも、バージョン3.78くらいになると一部更新されず、放置された結果、嘘のコメントになってしまう事があります。

理由はあるでしょう。コメントの更新を忘れただけかもしれないし、納期が厳しすぎてコメントまで手が回らないのかもしれません。
でも、そのコメントを頼りに修正したい側にその理由は通じません。古いままのコメントを手がかりにプログラムを組めばかえって回り道をすることになるでしょう。

これは仕様書なんかもそうです。
事細かく仕様書を残したがる文化は大手ベンダーにありがちですが、度重なるバージョンアップの後で、仕様書がプログラムと完全に一致している事はまずありませんし、仮にあったとしても膨大かつ神経質な管理体制と、それに伴う人件費がかかります。

そういえば、〇ずほのサクラダファミリアはどうなってるんだろう

そして、コメントいらなくない? となる

変数名にも特に制限はない、コメントは前述したようにプログラムほど厳密性が保たれないとなると「じゃあ、コメントいらないじゃん」となるわけです。

もちろん、GPU等のアセンブルコードを(いまでも)ガリガリ書いてますなんて人は引き続きコメントを重視すると思いますが、Web 界隈の一般的な言語だと…その意見も頷けます。

私も「コメントは不要」に傾いていますし、勢いでノーコメントにしてしまう事もありますが(ダメ)、C# で言うとコメントを書くのはこの辺です。

  • インテリセンスで確認できるような summary のコメントで必要そうな情報は書く
  • コードメトリックス値が少し高めになりそうな、複雑なメソッドは多少コメントを入れておく

「いらない」と言い切るのは気分いいですが、プログラム初心者の道標にはなりますし、過度にならない程度のコメントはあった方がいいかもしれません。

お勤め先や、自分を取り巻く環境に応じて、主張を「押し付ける」のではなく「通すとこは通す、迎合することは迎合する」というスタンスで気持ちよく仕事をしましょう。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA