- コードは動作するか
- 読みやすいコードか
- 標準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
test