doc.dev1x.org

コードレビューチェックリスト

1. 可読性

メソッド/関数の行数が長過ぎないか

メソッド/関数に記述されている処理の抽象度は適切か

巨大ループはないか

ネストが深くなっていないか

複雑な条件式はないか

# NG
if x == 0 and y > 10 and z != 999:
    :
    :

# OK
is_x = (x == 0)
is_y = (y > 10)
is_z = (z != 999)

if is_x and is_y and is_z:
    :
    :

# OK: allevery)でまとめてもよい
if all([is_x, is_y, is_z]):
    :
    :

循環的複雑度は適切に保たれているか

変数を上書きしていないか

name = "Mr A"
...
name  = "Mr B"     # <= これはNG
name2 = "Mr B"     # <= 別の変数に代入するのはOK

2. 命名

適切な命名か

一般的なイディオムに従っているか

3. モジュール設計

モジュールの役割は明確になっているか

十分にモジュール化されているか

モジュールの配置は適切か

モジュールの粒度は適切か/大きすぎないか

モジュールは粗結合になっているか

4. 関数/メソッド設計

メソッド/関数の引数は多すぎないか

プリミティブ型を乱用していないか

エラーを握り潰していないか

クエリ関数が副作用を発生させないか

不要なimportはないか

コメントは適切に記述されているか

順番に依存したコードはないか

5. セキュリティ

セキュリティに問題を生じさせる実装はないか

プログラムのパーミッションは適切は

プログラムが利用するアカウントの権限は適切か

6. パフォーマンス

パフォーマンスに悪影響を与える実装は無いか

7. コメント

嘘コメントはないか

無駄コメントはないか

8. ロギング

必要なログは出力しているか

不要なログを出力していないか

9. ユニットテスト

ユニットテストは実装されているか

ユニットテストは素早く完了するか

テストは機能をカバーしているか

10. コード品質強化

参考資料