Skip to content

Instantly share code, notes, and snippets.

@s-yoshiki
Last active August 13, 2022 13:48
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save s-yoshiki/9e446d69cf388703a4711f7e69cba173 to your computer and use it in GitHub Desktop.
Save s-yoshiki/9e446d69cf388703a4711f7e69cba173 to your computer and use it in GitHub Desktop.
ソースコードレビューのポイント

レビューポイント

全般

  • コードは動作するか
  • 読みやすいコードか
  • 標準APIにある機能を独自実装していなか
  • 広く使われている外部ライブラリを独自実装していないか
  • 冗長(重複)したコードは無いか
  • 仕様通り実装されているか

テスト

  • テストコードが実装されているか
  • テストコードの結果は正常か
  • テストコードはわかりやすいものか
  • モックを使いすぎていないか

命名規則・スタイル

  • スペルは正しいか
  • tmp,result などの汎用的すぎる変数を使っていないか
  • 限界値を示す変数に min_ max_を使っているか
  • 範囲を示す変数に first_ last_を使っているか
  • 説明変数・要約変数を使って改良できるコードが残っていないか
  • getXXXXメソッドをアクセッサー以外で定義していないか
  • ケースと記法について
    • キャメルケース・パスカルケース・スネークケースなどの記法と表現が正しいか
    • 定数はアッパーケースで記述されているか
  • 単数系・複数形が正しく使い分けられているか
  • コード内で名称が統一されているか
  • 略語を用いている場合
    • 意味が通じる略語か。
    • 短すぎないか
  • インデントは整っているか
  • マジックナンバーが書かれていないか

制御構文

  • 条件分岐処理について
    • ヨーダ記法を用いてないか
  • 論理式について
    • 短絡評価を乱用していないか
    • 三項演算子によってコードが理解しづらいものになっていないか
  • ループ処理について
    • do~whileループを使用していないか
    • ループが有限回数で停止するか
    • ループの終了条件は正しいか
  • ネストが深くなっていないか

関数・メソッド

  • 関数内で早めに処理が抜けられるものはreturnで適切にガード節が作られているか
  • ひとつの関数・メソッドが大きすぎないか
  • 返り値は適切か
  • クラス変数のスコープが必要ないクラス変数を定義していないか
  • 変数が適切なスコープで宣言されているか
  • ひとつの関数が複数のタスクを処理していないか
  • 関数名を逸脱した複数のタスクがひとつの関数に書かれていないか

セキュリティ

  • 外部から取り込むデータすべてに適切な検査処理(型、長さ、フォーマット、範囲)を行なっているか
  • 不正な値が入ってきたときの処理は実装されているか
  • 出力値は正しいエンコード処理がされているか
  • 仕様にはないデバッグ・保守機能等が組み入れられていて、情報漏えいや期待するアクセス制御の迂回がおこらないか
  • データを開くもしくは保存する前にサイズのチェックを行なっているか

アーキテクチャ・パフォーマンス

  • 再起呼び出しが有限の深さで停止するか
  • 領域からデータがあふれ得る箇所はないか
  • 標準出力と標準エラー出力を使い分けできているか

ファイル

  • ファイルパスについて
    • 絶対パスが埋め込まれていないか
    • カレントディレクトリに依存しないか
  • ファイルIOについて
    • 適切にクローズされているか

クラス・モジュール

  • モジュール分割が十分細かく行われているか
  • クラスは多くても300行以下、基本的に100行以下に収まっているか

コメント

  • 不要なコメントが存在しないか
  • 意味のないコメントを書いていないか
  • コードから読み取れる事をコメントに書いていないか
  • 定数にはコメントが書かれているか
  • (コーディング規約がある場合は)則ってコメントが書かれているか
  • 高レベルのコメントが必要なファイルには、ファイルの先頭にコメントが書かれているか

参考

IPA ISEC セキュア・プログラミング講座:C/C++言語編 第2章 脆弱性回避策とソフトウェア開発工程:ソースコードレビュー

google/styleguide: Style guides for Google-originated open-source projects

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

リーダブルコードまとめ

コードレビューの際によく指摘するポイントについて - Qiita

「リーダブルコード適用 チェックリスト」を作ってみました - Qiita

バグを増やさないためにコードレビューのチェックリストを使う - Yakst

コードレビューのベストプラクティス

@s-yoshiki
Copy link
Author

test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment