| name | code-review |
| description | コードレビューを行う場合にこのスキルを使用してください。
コードの品質、可読性、パフォーマンス、ベストプラクティスに関する包括的なチェックリストとガイドラインを提供します。
|
コードレビュースキル
このスキルは、コードの品質、可読性、パフォーマンス、ベストプラクティスに関する包括的なチェックリストとガイドラインを提供します。
レビューの前提
- 関連スキルである「coding-standards」をベースラインとして、実装がコーディング標準に従っているかを確認する
- コーディング標準への準拠確認に加えて、仕様適合性、回帰リスク、影響範囲、テスト不足、運用影響を確認する
有効化するタイミング
- ユーザーがコードレビューを要求した場合
- プルリクエスト・マージリクエストのレビューを行う場合
- コード品質改善のための分析が必要な場合
- ペアプログラミング・コードウォークスルーを実施する場合
可読性
- 変数名、関数名、クラス名が意味を明確に表現している
- 名前から用途・責務・抽象度が理解できる
- プロジェクト全体で一貫したコーディングスタイル
- 必要な箇所に適切なコメントが記述されている
- 論理的で理解しやすい構造になっている
- 関数・クラスが適切な長さに収まっている
保守性
- コードの重複が適切に排除されている(DRY原則)
- 各関数・クラスが単一の責任を持っている(単一責任原則)
- モジュール間の依存関係が適切に管理されている(疎結合)
- 将来の機能追加に対して柔軟な設計になっている(拡張性)
- 必要以上に複雑な設計や過剰な抽象化を導入していない
- 将来必要になるか不明な汎用化や拡張ポイントを先回りで追加していない
エラーハンドリング
- 適切な例外処理が実装されている
- 有用で適切なエラーメッセージ
- ファイル・ネットワーク・データベース接続の適切な管理
- 障害発生時の動作が予測可能で適切
ロギングと運用性
- 重要なイベント、障害、セキュリティ上の重要事象が適切に記録されている
- ログレベル、フォーマット、記録項目が一貫している
- 相関IDやトレースIDにより、1回の操作や1リクエストの流れを追跡できる
- ログにパスワード、トークン、シークレット、個人情報、その他の機微情報を含めていない
- ログインジェクションやログ基盤への過剰依存など、ログ出力自体の安全性と可用性が考慮されている
アルゴリズム効率
- アルゴリズムの時間効率が適切(時間計算量)
- メモリ使用量が最適化されている(空間計算量)
- 用途に適したデータ構造の選択(データ構造選択)
- 性能ボトルネックの特定と対策(ボトルネック)
リソース最適化
- 効率的なクエリ・N+1問題の回避(データベースアクセス)
- 不必要な外部API呼び出しの削除 (APIコール)
- 適切なキャッシュの実装(キャッシュ戦略)
- 適切な並行・非同期処理の実装(並行処理)
メモリ管理
- 潜在的なメモリリークの回避
- 不必要なオブジェクト生成の削減
- ガベージコレクションの負荷を考慮した実装
アーキテクチャ
- 適切なレイヤー構造の実装(レイヤー分離)
- ビジネスロジック・UI・データアクセスの分離(関心の分離)
- 適切なデザインパターンの適用(デザインパターン)
- SOLIDの設計原則への準拠(SOLID原則)
モジュール設計
- 明確で使いやすいインターフェース(インターフェース設計)
- 適切な情報隠蔽の実装(カプセル化)
- 継承と委譲の適切な使い分け(継承・委譲)
- 依存関係の注入による柔軟性確保(依存性注入)
テスト品質
- 正常系・準正常系・異常系のテスト
- 境界条件のテスト
- 適切なテストデータの作成
- 外部依存の適切なモック化
コーディング規約
- 「coding-standards」に記載された命名、コメント、エラー処理、ロギング、アンチパターンの基準に反していない
- プロジェクト固有の規約と共通規約が矛盾なく適用されている
スタイルガイド
- 一貫したインデントの使用
- 適切な改行と空白の使用
- 行の長さ制限の遵守
- プロジェクト固有の命名規則の遵守
機能実装
- 仕様・要件を満たしているか
- ビジネスルールが正しく実装されているか
- ユーザビリティの考慮
- アクセシビリティの考慮
データ処理
- データ検証: 入力データの適切な検証
- データ変換: データ型変換・フォーマット処理の正確性
- データ永続化: データベース操作の正確性
- 一貫性: データの整合性維持
アンチパターン
- 長すぎる関数、深すぎるネスト、マジックナンバー、グローバル変数の乱用がない
- 巧妙だが理解しづらい実装よりも、単純で保守しやすい実装が選ばれている
レビュー実施
- 大きな変更の場合の段階的レビュー
- コンテキスト理解: 変更の背景・目的の理解
- 変更の影響範囲の評価
- より良い実装方法の提案
フィードバック
- 具体的で建設的なフィードバック
- 修正の優先度の明確化
- レビューを通じた知識共有
- 修正後の再確認