サンダーボルト

相手モンスターを全て破壊する。

コードレビューのレビュアー心得

モチベーション

自分がコードレビューをするときに、どういったことを観点として持つべきか、どういう態度をとるべきかをいつでも振り返れるようにメモしておきたい。

コードレビューの目的

目的

以下を確認するために行う

  • 保守性の高いコードになっているか
  • 速度/メモリ効率の良いコードになっているか

詳細

コードの保守性と、速度/メモリ効率を高めることを目的と考える。保守性については、誰にでも読めるコードにすること、変化に強いコードにすることを指す。

その他、

といったことは、基本的にはコードレビューとは別の方法で解決すべきというスタンス。ただし目的を達成する中で上記を行うこともあるし、別のフェーズで難しければコードレビューの力を借りても良いケースもありそう。

逆に言えば、保守性や速度/メモリ効率はテスト等の他の方法で網羅するのは難しいと考えている。

コードレビュー観点

目的を達成するために、どういった観点でコードをチェックすべきかをまとめる。

保守性に関する観点

いうても、基本的にはリーダブルコードに従っておけば良いという認識。

  • 単一責任原則
  • 命名
  • ドキュメント/コメント
  • 説明変数の利用(userName := x.y.z のように分かり易さのために変数を作る)
  • スコープ
  • プロジェクトが採用しているアーキテクチャに沿っているか

速度/メモリ効率に関する観点

  • 遅くても  O(n^{2}) で抑える。できればそれ未満で。
  • データの持ち方を工夫してメモリを減らせないか
    • そもそもオブジェクトの構造から変える
    • intじゃなくてboolean
    • リスト長の初期値を指定できないか等

基本的には上記のスタンスだが、プロジェクトごとのコーディング規約に基づいて変わることも当然ある。

レビューでのメッセージ

  • 論理的にコードに対して指摘する(人格を攻撃しない)
  • 指摘されるのは辛いことであるということを理解して、できるだけ優しく、絵文字を交えて
  • 読みにくい/読みやすいというのは主観であり、他人と違って当然。協力して良いコードを作り上げるという意識を忘れないように
  • 楽しく!!