🕌

imo 不要論

2023/03/12に公開

はじめに

レビューコメントにラベルをつけるのは、分かりやすさの向上として価値があります。ただ私は 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