雑に考えてみた。 フロントエンドのコードレビューを前提としているが、観点自体はそれにとどまらないはず。
かっこ内には代表的な概念を書いた。
大観点
- コード
- 設計
- 機能要件
- 非機能要件
- テキスト
- スコープ
中観点の例
- コード
- 読みやすいか
- 正しく書かれているか
- 保守しやすいか(クリーンアーキテクチャ)
- 余計なことをしていないか(KISS、YAGNI)
- コーディングルールに則っているか
- 世間のベストプラクティスに沿っているか(DRY、SOLID など)
- 設計
- 関連するロジックがひとまとまりになっているか・適切に分割されているか
- ビジネス要件を書き下した構成になっているか
- 他の箇所と整合性が取れているか
- 機能要件
- 仕様通り動くか(フロントエンドにおいては画面表示も)
- 動作確認が必要か・取れているか
- エラーハンドリング・異常系の考慮ができているか
- 曖昧な仕様がないか
- 非機能要件
- セキュリティ(XSS、CSRF)
- パフォーマンス(N+1 問題)
- マークアップ
- ユーザビリティ(エラーの通知)
- アクセシビリティ(フォーカスリング)
- テキスト
- 命名が妥当か
- コードコメントを正しく書いているか・つけすぎていないか
- ドキュメントを作成・更新しているか
- レビュー内容で必要な部分に必要な説明がされているか(背景、動作確認の有無など)
- スコープ
- 変更目的が一つになっているか
- スコープ外の変更が含まれていないか
- スコープは十分小さいか・小さすぎないか
加えて
コードレビューをする側は、コミュニケーションについても気をつけるべきだと考えている。
- コミュニケーション
- ポジティブなコミュニケーションができているか
- HRT を意識できているか
- コメントを入れた理由を説明しているか
- なるべく早く対応しているか