imo 不要論
はじめに
レビューコメントにラベルをつけるのは、分かりやすさの向上として価値があります。ただ私は imo
= in my opinion というラベルは不要だと思っています。なぜかというと、そのフレーズには情報量が少ないからです。具体的な例を見てみます。
具体例で考える
コードレビューで下記のコメントが書き込まれたとします。
[imo] このメソッドは分かりにくいので2つに分解するのはどうでしょう?
レビュアーは、メソッドの分解を提案しています。その根拠は今のコードが「分かりにくい」ということです。レビュアーは [imo]
というラベルによってそれが主観的であることを自ら認めています。このコメントを見たプログラマーはおそらく下記のように戸惑うでしょう。
「レビュアーの主観では分かりにくいかもしれない。しかし、私にとっては分かりやすいコードになっている。どこが分かりにくかったのだろう。いや、そんなことを想像してもわからない。いっそ議論する手間を省いて、提案を受け入れてしまおうか」
レビュアーが考えていることがわからず、時間を浪費してしまいます。このようなコメントは避けるべきです。もっと良いコメントは提案の根拠を、客観的情報を交えて説明します。
[imo] このメソッドは 20 行にもなっていて、理解するのに時間がかかりました。
A と B の操作を組み合わせているからだと思います。
A と B の操作をそれぞれメソッドとして分解するのはどうでしょう?
修正前と比較すると情報がかなり増えています。これならプログラマーは、なぜ修正を求められているのか、どのようにするべきかを理解できます。もちろん、これに同意せず反論するという選択もできます。反論の一例は下記のとおりです。
[imo] A と B を分ける案は理解できます。
しかし A と B はお互い依存性を持っているため、これらを切り離して別々に利用するユースケースはありえません。
私は A と B は一つのメソッドに固めている方が分かりやすいと考えています。
上記のやり取りはいずれも、レビュアーとプログラマーの「個人的な意見」なので imo
ラベルを与えてみました。しかし彼らの会話は具体的な根拠に支えられています。これらの会話からは imo
ラベルを取り除いても十分議論は成立します。ここでは「個人的な意見」を戦わせていると言うよりも、メソッド分割する・しないことの良し悪しを客観的に議論できているからです。もちろん、究極的には彼らが主観的であることは避けられません。だからと言って imo
を与えるのなら、全てのコメントは imo
になってしまいます。そういった陳腐さを持っているからこそ私は imo
ラベルは使うべきでないと考えます。
終わりに
imo
ラベルは、みんなと違う意見を述べることの抵抗感を和らげるため、つい使いがちなフレーズです。しかし聞いている側にとっては主張がぼやけている困ったコメント、あるいは過度な自己防衛に見えます。このラベルをつけたくなった時は、コメントしようとしている内容を整理し、具体的な根拠を書くべきです。そうすることで自分が主張していようとしていることの説得力・客観性が増して、「個人的な意見」がより論理性を伴ったものになり imo
を剥がせるようになっていくのではないかと思います。無意味な imo
を使うのはやめていきましょう。
Discussion