土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話

土屋はプログラマの中でもかなりコメントが多いタイプだと思っています。理想を言えばコード1行ごとにコメントを書きたいくらいです(本当は、識別子を全部日本語で書きたいと思っているのですが、これはまた別の話)。

 これは土屋がPDL(Program Design Language https://www.gamedev.net/resources/_/technical/general-progra... )開発スタイルの薫陶を受けているからなのですが、それとは別に「そもそも日本人には英語ベースのソースコードを高速に読解するのは無理がある」と考えているからです。

 また、より本質的な課題があると思っていて、プログラミング業界的には「コードがドキュメントであるべき(≒正しく実装されたコードであれば、コメントは最低限になる)」という風潮がありますが、土屋は、これはプログラマが夢見る幻想に過ぎず、「本質的に、コードはドキュメント足り得ない」と考えています。

 例えば以下のようなコードがあったとして、

if (alpha < 1.0f){
 //処理A
}

 処理Aが実行される条件が「alphaが1.0fより少ない場合」なのは自明です(なのでそれをコメントで書く必要はない)。
 けれど、「「alphaが1.0fより少ない」とはなんなのか」は、このコードには書いてありません。そのような、コードには現れない「意図」のコメントが必要だと考えています。

 例えば以下のようにコメントを書けば、条件判定の意図が明確化できます。

//フェードインが未完了の場合
if (alpha < 1.0f){
 //処理A
}

 上記は極端な例ですが、実際にコードを書く時にはこのようなプリミティブな処理を記述することが大変多く、3日前に書いた数式の意図を実装者が思い出す所からコーディングが始まる無限地獄を回避する為には、このようなコメントが必要なのです。

 逆に言えば、「正しいコメント」を書く技術というのがあり、その習得は難易度が高いと言えます(上の条件に「alphaが1.0fより少ない場合」とコメントしてあったら「それは見ればわかるだろ!」と叫びたくなる)。