まず言っておきたいのは、コメントってやっぱり大切だってこと。
コードを書いた人の意図を後から見た人が理解できるようにするためのものだし、未来の自分が「あれ、これ何書いたっけ?」と迷うのを防ぐためにも、コメントは欠かせない。
でもうちの会社にいる“バリバリできる人”、仮にSさんとしておきましょう。
このSさん、そもそもプログラムのスキルが超ハイレベルで、コードをめちゃくちゃ書ける人。
みんなが「あれどう書くんだっけ?」ってなるような複雑なロジックをサクサク書けるし、妙なバグも即座に見抜く。もう尊敬しかない。
で、Sさんのコードは、当然コメントもバッチリ入っているわけですよ。ただね…これが実に困った問題なんだけど、そのコメント…意味がわからない。
だって、Sさんの説明って、どこか抽象的だったり、ちょっと暗喩(暗号?)染みてるんです。
言葉としては正しいし、ちゃんと書いてくれてるんだけど、どうも頭に入ってこない。
たとえば「このループは不変量を維持するための役割を果たす」とか、やたらと専門用語が並ぶ感じ。
で、読んだ結果「何をどうしてるんだっけ?」と逆に混乱してしまう。
それで、しまいには「Sさんのコメントの意味がわからないから、誰かもう少しわかりやすい説明を足してくれませんか?」っていうリクエストが社内で上がるようになった。
この“コメントに対するコメント”という新しい文化が生まれつつある。
Sさんが「ここは変数の定義です」と書くと、誰かが「この変数の定義がなぜ必要かについて補足します」とか、「ここでの不変量とは何か解説します」とか言い出すわけですよ。
Sさんが「このアーキテクチャがスケーラビリティを保つためのものである」と書けば、「スケーラビリティの具体的な定義についてもここにメモしておきます」とか。まるで辞書の注釈がついていくみたいに、コメントがどんどん増えていく。
こうなると、なんというか「天才の思考の跡をたどる」って感じになってきて、普通のエンジニアとしては大変なんよ。
Sさんとしては、きっとわかりやすく書いてるつもりなんでしょうが、僕たちからするとSさんのコメントを読み解くためにさらに別のコメントをつけていく状況。
こうして、コメントの数だけが増え、肝心のコードがどんどん見づらくなっていく。
なんだか本末転倒な気もするけど、仕方ない…。
コメントがないとわからないし、でもコメントがあってもわからない。
いやー、天才ってすごい。