logo
/
コードレビュー
2022-01-05

レビューを出す場合

関心事(目的)を少なく(1つに)する

関心事 = レビュワーが気にすること
関心事が増えないならどんなに大きくなってもあまり問題ではない(全て同じ変更をしていると見れるので)

機能の変更でフォーマットの変更はしない
テストと実装は片方だけ(新規実装は除く)

[!tips] 大きなPRを切り出す
大規模な実装をするとき(リファクタリングをするときなど)は、最初から1つの関心事に絞るのは難しい。
そういう場合は関心事がごった煮になった大きいPRをDraftで作って、その後適切な関心ごとの単位を見つけて切り出していけば良い
git checkout <branch> <file> などを使うと別 branch の状態の file を checkout (気持ちの上では copy) できて一部楽になります。

Pull Request を chain する
あるやりたいことのためにn個の直列な PR を作りたくなったら、k + 1番目の PR の base branch を k番目の branch にするようにしています。そうすると diff が小さく見えるのに加えて、k番目が merge されると自動的に base branch が default branch に切り替わるので何もしなくても勝手にいい感じになります。関心事を小さくすると Review 速度のほうが PR 作成速度より早くなるので、新しい PR を積むときに一番古いものの Draft を外していくだけで良いペースで消化されていきます。

自分でセルフレビューする

  • 想定外の動作変更が無いか
    • 動作変わらないつもりで書き換えていても変わることはよくある
      • 変更したかったことだけじゃなくて、実際に変更したことから逆説的にも行う
    • なんだこの実装?みたいに考えて表面的な動作だけ見て安直に修正することもあるが、大抵はそうなっている理由がある
    • もちろんより良い実装に直せる場合もあるが、そうなった意図を考えて手を加えること
  • src => distのマージの前にローカルでdist => srcのマージと動作確認を行う
    • conflict発生してなくても、影響がある場合がある
    • 競合として認識されない = 上書きされるのでむしろ危険
  • ビルドできるかを確認する
  • 全てのテストがパスするかを確認する

書き加える情報

理由

「何を」書いたかもそうだが、「なぜ」どの方法でコードを書いたのかを説明する
プログラムのコメントと同じ

検証情報

このコードはこういった検証をしてこのような結果が出たコードであるということを伝える

ファイル間の関連

※ある程度の規模感以上の場合
どこがコアな変更でどこが付随の変更なのかがわかると見やすい

PRの立ち位置

このPRで終わりなのか、後続でやることがあるのか
何か漏れがある場合に、ミスで抜けているのか敢えてやっていないかがわかる

レビューをうけるとき

綺麗な履歴を残す

自分がそのブランチのオーナーならば、強制Pushをすることを躊躇しなくて良い
余計な修正が入った場合に打ち消しのコミットをするのではなく、前のコミットを修正して良い
その時はgitで不可逆な操作をする場合はブランチを新しくするを忘れない
※ squash-mergeをする場合はその限りではない
※force pushをしちゃうと、レビューの指摘に対して対応したのかを確認できない

参考