Schi Heil と叫ぶために

hiroakiuno's blog

コードレビューの心がけ (その1)

最近、仕事でほぼ毎日コードレビューをしている。チームの中で行っていることなので対象は高々数人の書いたコードだが、それでも自分以外の人のコードを読んで意見を交換するという経験をこれほど続けたのは初めてのことで、そこで分かってきたことや改めて気づいたことがいくつかあり、それを何回かに分けて書いてみようと思う。

人のコードをたくさん読んでいると当然ながら人によって癖があることに気づく。癖という言葉は語弊があるかもしれない。ここで言うのは、スペースの数とか括弧の位置とかそういう類のもの(それはそれで人によって大きく異なる)ではなく、もう少し大きな問題の捉え方のことである。目的を達成するコードの書き方には何通りもの選択肢があり、目的を満たすという点ではどれも正しいのだが、そのどれを選ぶのかというのがおおよそ人によって決まっており、その「癖」が異なると読んでいても非常に引っかかるというのが正直なところである。ではその引っかかりをどうするか。

人にはいろいろなタイプがある。例えば他の人がそうやっているからと気にせず真似られる人。これも一つの才能だと思う。逆に自分はこうだと他人に染まらない人。これもそのこだわりが理解できるとなるほどと理解できたりする。その他、細かい部分に非常に気が回る人、やたらと汎用性を気にする人、変数や行数を必要以上にケチる人などなど。ハッカー集団というわけではないので、全員が全員美しいコードを書くわけではない。正直その癖には(間違いではないが)あまりお勧めできないものもある。ただ癖の否定はどうやわらかく説明しても本人の否定と捕らえられる場合があり、できることなら避けたほうがよいというのが最近の考え方。目的は正しく動くコードであって、私の好みのコードではないからだ。

とはいっても、全部スルーでは私がコードレビューしている意味がない。私の意見が必ず正しいなんて言えないし言うつもりもないが、私の直感に合わないない部分は別の人間がすっと頭に入ってこない部分と言う意味で、いくら面倒であっても申し訳ないがそれを補足するコメントはつけてもらっている。

今日の深夜に NHK で再放送していた番組で将棋の羽生さんが言っていた。

「直感とは、今まで自分が積み重ねたものの中から、迷いなく浮かび上がってくるもの」

私が参加するコードレビューで大切にするのはそれである。

ということで「自分の癖は押し付けないが直感に合わない部分は最低コメントはつけてもらう」が一つ目。一生懸命ここはこう変えたほうがいいんじゃないと言ってもなかなか納得してもらえない部分が、コメントだけはつけて下さいなんて言っているうちにお互いが少しずつ歩み寄って、双方が納得できる書き方に落ち着いたというのもよくある話。北風よりも太陽である。