私のコードレビュー観点について

仕事でまとめる機会があったので、ブログに残しておきます。

私が考えるレビュー観点は以下の4点に分類できます。

  1. 仕様
  2. 内部品質
  3. セキュリティ
  4. パフォーマンス

1. 仕様を満たしているか

  • 仕様の漏れがないか
  • 仕様の誤りがないか

2. 内部品質

  • 変数名・関数(メソッド)名・クラス名に関してニュアンスを捉えた英単語を選択しているか
  • コメントに嘘がないか
  • 可読性を考慮できているか
    • 込み入った処理の場合は、説明的変数や説明的メソッドを用いるなど
    • ifやswitchを使わない、使っても深くネストしない(せいぜい2つまで)
  • 使用している言語のイディオムや慣習に従った書き方ができているか
  • パフォーマンスよりも可読性を優先してかけているか
    • 可読性が高いコードであればボトルネックを突き止めるのは簡単なため、パフォーマンスの問題が起きてから最適化すれば良い、という考え方。
  • 適切なデザインパターンを適用できているか
  • typoがないか

3. セキュリティ

  • パスワードの類の情報をハードコードしてたり設定ファイルに書き込んでいたりしないか
  • 脆弱性のあるライブラリやフレームワークのバージョンを指定していないか
  • メンテナンスが止まってしまっているライブラリやフレームワークを採用していないか

4. パフォーマンス

  • 無意味に処理が遅くなる書き方をしていないか(Javaのfor文の中で+を使って文字列を結合する、とか)
  • thread safeにも関わらず毎回インスタンスを生成していないか
  • full scanになってしまうSQLになってないか
  • 必要に応じてテーブルのINDEXを定義できているか

超簡単な内容ですが、簡潔にまとめるとこんな感じです。