コメントを書くようにコードを書く

タイトルだけで内容がわかるので引用はしないが、「ソースコードのコメント率は20%を切ることが望ましい」- 小野和俊のブログで書かれていることにはおおむね賛成だ。

ただし、もちろんこれには前提がある。「チームの全員がそれはまっとうな、トリッキーでない方法でしっかりとコードを書ける」ことだ。で、これが満たされるのは案外少ない。ポインタと配列の区別がついてないような素人をチームに入れざるをえないことがよくあった。悲しい。そういうやつらは、素直に書けば 3行でかけることを 10倍に伸ばして、なおかつコピペしたりする。

だからといって、前提が満たされない環境ではコメントを増やすべきか、というとそうでもない。そんなやつらにコメントを書かせたって意味のあるものを書くわけがない。サブルーチンの直訳だったり、コメントに未定義の単語が出てきて意味がわからなかったり、本当に重要な前提を書いてくれなかったり。「コメントを書け」とはよく聞くが、本当に重要なのはその中身である。

ではコメントに変わるものは何か。

スタイルが重要だということを強調しておきたい。「素直」なコードを書くためには、何が素直か体でわかることが必要だ。それを体に染み付かせておけば、自然と解決法はわかるし、何がトリッキーなのかはわかる。こんなことはみんながやりそうだからすでに関数ができているだろう、というのも想像がつくし、逆に、ないからみんなに公開しよう (もちろん、このときは APIのレビューとかも必要になるが) というのも motivationがつく。

まあ、スタイルも精神論っぽいので、これでカバーできる範囲にも限界はある。でも、それを意識して「コードなんて動けばいいじゃん」という態度を捨てれば、生産性が 20%ぐらいあがるんじゃないのかな。