コードレビューで大切にしたいこと5選
はじめに
コードレビューをする側(レビュアー)で大切にしたいことを5つに厳選して記事にまとめました。
業務で経験する場面が多かった、コーディング初心者とのペアレビューで効果的だったことから、コミュニケーションスキル中心に書いています。
この手の記事はよくあるものだと思いますが、今回紹介する考え方・テクニックは、先駆者の記事や書籍から気になったことを試して、良さを実感したものです!
これからレビュアーにチャレンジする方の為になれば嬉しいです。
中~上級者の方も、初心を思い出す観点で読んでいただければ幸いです。
1.レビューイをリスペクトする
私が初心者のレビューを担当する時は、コードレビューする相手(レビューイ)をリスペクトするように心がけています。
指摘を行う際は「レビュー後の行動が起こし易い」かつ「相手を傷つけない」伝え方を選びます。
コードレビューの目的の一つはプロダクトの品質を高めることなので、端的にダメなところをズバズバ指摘するやり方もありますが、相手を傷つけてしまっては本末転倒です。レビューするのは相手の性格ではなく成果物です。
例えば...「このコード非効率だね、なにか意図はある?」「間違ってるから、公式ドキュメントちゃんと読んでね」こんなセリフで傷ついてしまう人もいるかもしれません。
私がチームで仕事をするときは、相手を気持ちよく・上手く動かすためのコミュニケーションを心がけることが大切だと考えています。
特に、プロジェクトや組織のメンバーとして長期的に付き合っていく場合、良い雰囲気作りが生産性の向上に繋がると信じています!
2.指摘の理由・修正の意義を的確に伝える
レビューイが同じミスを繰り返す場合、指摘の理由・修正の意義を伝えることが効果的です。
「この修正はこんなメリットがあるよ」と伝えないと行動に移しにくく、答えのみ教えていると類似したミスを起こしやすいと感じました。
最初はコードの良し悪しについての言語化が難しいと思いますが、なんとなくで判断しないことは重要です。
良いコードとは何かという定義と、改善によってどんなメリットがあるのか学んでいきましょう!
学びのヒントになるキーワードは下記のようなものです。ピンと来ない方は調べて見る価値があると思います。
・DRY原則、KISSの法則
・結合度、高凝度
良いコードとはなにか学ぶ教材として、私は下記の記事にお世話になりました。
3.改善点の重要度を伝える
ソースコードの改善点が複数ある時は、重要度をセットで伝えることが効果的です。
重要度伝えることで、優先して着手すべきタスクが理解しやすくなります。
残り時間が少ない場面では、作業を取捨選択する指標になります。
私は「must」「should」「imo」の3段階で重要度を分類しています。
-
must
絶対に対応するべき指摘。
実装漏れや明らかなミス、コーディング規約に違反しているコードなど。 -
should
可能であれば対応する改善点。
効率化可能なアルゴリズムやアンチパターン。可読性が上がるコードなど。 -
imo(in my opinionの略)
現状のままでよいが、自分ならこうするという意見・アドバイス。
命名やコメントにおける、些細なニュアンスや書き方の変更など。
指摘の数を絞ることもありますが、レビューイの力量を見ながらなるべく詰め込むようにしています。
できる範囲でチャレンジしてもらいたい・何をすべきか自分自身で選択させたい・成長してもらいたい、という想いを込めています。
4.否定せずアクションプランを提示する
指摘事項を伝える時は、否定せずに具体的なアクションプランを提示することが効果的です。
テキスト・口頭どちらの場合でも「~しない」「~禁止」という指摘が多いと、レビューイが行動を起こしにくいです。
端的に、否定的な指示ばかりでは「じゃあどうすればいいんだよ!」と思われてしまいます。
否定文を言い換えて「~した方がよい」とアクションプランを混ぜてみましょう。
成長させたいという観点で、時には答えを教えないこともあると思います。
その場合は、どのように改善するべきか・何を調べるべきか、一緒に考えてあげるのも良いと思います。
5.PREP法を利用して説明する
説明が難しい・伝わりにくい場合、PREP法という文章構成術を利用することが効果的です。
PREP法は「結論」「理由」「具体例」「結論」の4つのステップからなる文章構成術・フォーマットです。
コーディングで何かを改善する説明は下記のように行います。
結論 :○○という問題をXXのように改善したほうがよい
理由 :なぜなら~だから
具体例:例えばこうする。こういうメリットが得られる
結論 :だから、XXしたほうがよい
全ての説明に利用するのは大変なので、伝えるのが難しいと感じた時に、このフォーマットにあてはめて整理しています。
レビューに限った話ではないですが、テキストでの説明がニガテなので、とても重宝しています!
最後に
紹介した5つの考え方・テクニックはいかがだったでしょうか。
この中で、1つでも業務に使えそうなものがあれば、ぜひ試して頂きたいです!
今回は初心者向けのレビューを想定した記事なので、メンバーが成長してきたら徐々に補助輪を外していきましょう。
自分への戒めになりますが、初心者の気持ちを忘れずに、コードレビューへの向き合い方・スタンスを大切にしたいです。
記事へのご意見・コメントがあれば、お気軽にどうぞ!
ここまで読んでいただき、ありがとうございました。
Discussion