すてにゃん氏の技術ぶろぐ

技術っぽいこと書きます

レビュワーや未来の自分を意識してプルリクエストを作る

お題「エンジニア立ち居振舞い」

こちらではご無沙汰していました。技術の話しなきゃ。
「エンジニア立ち居振る舞い」というお題です。

this.aereal.org

こちらの記事をみて思い出したので関連してプルリクエストの話をします。

レビューが消化されない理由

レビューが中々消化されない(レビューされない)理由として考えられる点はいくつかあります。

  1. プルリクエストをレビュー出来る自信がなくて放置してしまっている
  2. プルリクエストをレビューはしているが、なんらかの理由で打ち返し続けていて中々LGTMを出さない

などなど。他にもあると思いますが。「レビューをしていない」に関してはまあするしかない、という感じですね。難しいプルリクエストはレビューする勇気を出すのが難しいかもしれません(私はそうです)が実際には難しいからこそ勇気だしてレビューしていくべきなんですよね(勉強にもなる)。

「打ち返しが多くてLGTMが出せない」に関しては「プルリクエストの規模が大きい」「コードの質が低い」などが原因としてあげられると思います。

レビューしやすいプルリクエスト

レビューをすばやく通るプルリクエストとはどういうものなのか。まずは規模がでかくないこと。

極端にいうと例えばプルリクエストで1000行ほど一気に追加してるものがあるのと、10行ほどしか追加していないけど複数にわけられてるプルリクエストだと後者のほうがレビューをする回数は増えたとしてもレビュワー的にもささっとレビューしていけます。「結局同じでは」と思うかもしれないですが、diffが大きいとそれだけ一度に考えるべき影響範囲が大きいので、レビューするたびにそんなにいろいろなことを考えるのは厳しいです。レビュワーにやさしくして、発生しうるバグも未然に防ぎましょう。

あとはプルリクエストの「説明がちゃんとされているもの」も良いです。どういうことかというとプルリクエスト作者がレビューしてもらう前に事前に何がしたくて何を実際にしたのかを日本語で説明をし、可能であれば影響範囲や動作確認の方法もまとめてくれるとレビュワーも自分が何をレビューしようとしているのかをがんばって考える必要がなくなります。一体なんなのかわからない正体不明の(しかもdiffが大きいとなおさら)プルリクエストがくるとなかなかレビューしようという気持ちにはなれません。

「コードの質が低くてLGTM出すまで時間がかかる」に関しては、レビューしていくうちにレビューされてる側も学習していくで(はず)なので徐々にマシになっていく…はず。

まとめ

  • プルリクエストのdiffは小さめにわかりやすく!
  • プルリクエストの説明を日本語(もしくは英語)でしっかりしよう!
  • レビューされていくと勉強になるぞ!