March 7, 2016 · コードレヴュー チートシート

コードレヴュー時のチートシート

基本

適切な名前か
複数の通信が同時に起こった場合は想定できているか
適切なシーケンスで処理が行われているか
むやみやたらに変数作り過ぎてないか
コメントは適切、適量か
HeaderDoc等は記述されているか
状態変数はなるべく避けることができているか
なるべくタイプセーフにできているか
ネスト深すぎないか(3以内には)
DRYか
共通化に囚われすぎてないか
言語に元からある機能を使えているか
もっと簡潔に書けないか
疎結合か
メソッド設計は適切か
スレッドセーフか
アクセスコントロールは適切か
インターフェースはシンプルか
境界条件(0,nil等)の動作は確認したか
テスト書きやすいか
テストは通っているか (ViewModel等はできる限り書くべき)
影響範囲が限定的な実装か
デグレを引き起こす可能性は考えたか
処理速度的に著しく悪い場所がないか(簡単にベンチマーク取れるなら要確認)
無駄な処理がないか
負荷のかかる(かかりそうな)処理となっていないか
IOアクセスは最小にとどめられているか

なるべく静的解析ツールに任せる部分

命名規則
良くあるバグリスク

メソッド設計

不必要にメソッドを分割していないか
ファンクションメソッド内でインスタンス変数の変更を行う等の副作用はないか?

ファンクションに副作用があっても良い場合

* ファンクション内で一時的にオブジェクトを変更するが終了時に元の状態に必ず戻る場合
* ファンクション内で外部に公開されていない属性(プライベート属性)を変更するとき。
※ゲッターのあるプライベート属性は例外に含めず

参考

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket