セルフコードレビュー

自分の書いたコードのレビューを依頼するとき, 必ず先にセルフレビューするようにしていて, まあまあ上手くいっていると思っている.

元々のモチベーションとしてはコードの品質の向上と (本物の) レビュワーとのコミュニケーションのつもりだったけど, 本来レビュー時に行われるはずだったやりとりが削減されることで開発が高速化される効果もありそう.

ルフレビューにかける時間は, 典型的な規模 (差分 500 行以下くらい) の場合で修正込みでだいたい 15 分 〜 30 分程度で, そこに至るまでの実装にかけている時間が 1 〜 2 時間くらいと考えるとまあまあ時間は割いている. ただこれは他の人のレビューを待って, 一往復に数時間 〜 数日かけてやりとりして同じ変更を加えるよりはずっとマシ.

何かの参考になるかもしれないので私のやり方を書いておきます:

  • 他の人のコードをレビューするときと全く同じ方法で行っている
    • 私の場合 GitHub 上で見て, 現在の Pull Request の差分のみに注目している
    • コードを書くエディタ上とは環境を変えることで, 客観視しやすくもあると思っている
  • 注目するところも他の人のコードのレビューと同じ
    • 設計
      • イケてるか
      • 意図を説明できるか
    • 実装
      • 規約や慣例に従っているか
      • 命名や記述に一貫性があるか
      • コードが読みやすいか
      • コードやコメントなどから実装の背景や意図が伝わるか
      • リファクタリングの余地があるか
    • テスト
      • 意図通りの内容をテストできているか
      • 網羅性は十分か
  • 洗い出された問題点を修正する
  • 加えて本物のレビュワーへの手紙をレビューコメントとして残す
    • 背景や意図が伝わりにくい箇所を補足する
    • 現時点ではまだ仮実装であるといった文脈を補完する
    • 自信がない箇所であれば表明して意見を求める
  • 書いたレビューコメントを見直して, コード中にコメントを残した方が良い内容であればコードに転記する
    • 例えば背景や意図が伝わりにくい箇所は, 今からコードを読むレビュワーだけではなく, 後からコードを読む人にとっても伝わりづらいはず

やり方は違うかもしれないものの似たようなことをしている人はもちろんいて, レビューする側として見た場合に, セルフレビューを経て細かい問題が取り除かれ, 適宜補足コメントなども書かれたコードのレビューはとてもやりやすいという印象も持っている.

f:id:susisu:20210308022313p:plain