コードレビュー項目,あなたもいつかはレビュアーに!
ソフトウェア開発において
ソフトウェア開発において、コードレビューは品質向上のための重要なプロセスです。
あなたもいつかはレビュアーになる日が来るでしょう。
その時に備えて、効果的なコードレビューのポイントを理解しておくことは非常に有益です。
本記事では、コードレビューでチェックすべき重要な項目をいくつか紹介し、より高品質なコードを書くための基本的なレビュー項目を記載します。
こちらを参考に、より多くのレビューを通じて自分専用のレビュー項目を増やし、
品質の高いプログラムを世界に公開していきましょう!
コードレビュー項目
- 仕様通りのプログラムか(必要な処理なのか、問題ない仕様か)
- 仕様に沿ったプログラムか
- ※そもそも良くない仕様に対しては、顧客にリスクを説明して、調整することも必要です。
- ※プログラムの修正ではなく、意外とオペレーション側で対応した方が良い場合もあります。(要件に対して疑問を持つことも大切です!)
- 命名規則の遵守
- 変数名や関数名がプロジェクトの命名規則に従っているか。
- フラグやステータスの数字や文字列の代わりに、意味のある名前の定数を使用しているか。
- 名前が意味を持ち、コードの意図を明確にしているか。
- (センスのない変数は、他の実装者や未来の自分にクスッと毎回苦笑われることも。。。)
- 共通の処理の共通化
- 重複したコードが存在しないか。
- 共通の処理は関数やメソッドにまとめられているか。
- 再利用可能なコンポーネントやライブラリを使用しているか。
- バリデーションチェックの処理前実施
- 入力データのバリデーションが適切に行われているか。
- バリデーションは処理の前に実施され、エラーを早期に検出しているか。
- 攻撃されても問題ないプログラムか(例 SQLインジェクション攻撃等)
- SQLクエリがパラメータ化されているか
- 直接SQLクエリを生成するのではなく、プリペアドステートメントやORMを使用しているか。
- エラーハンドリング
- 適切なエラーハンドリングが行われているか。
- エラーのログ記録と通知が適切に行われているか。
- メモリ管理
- メモリリークを防ぐための適切なリソース管理が行われているか。
- 不要なオブジェクトが適切に破棄されているか。
- 例:
- 1万件をループする処理の場合などは、メモリオーバで落ちる可能性があるため1回で取得するのではなく、何回かに取得分けてメモリを分散させているか確認
- スレッドセーフティ
- マルチスレッド環境での競合状態が発生しないような対策が取られているか。
- スレッドセーフなデータ構造や同期機構が使用されているか。
- 例:
- ある変数に対してスレッド A がその値を変更しようとしている最中に、スレッド B が同じ変数にアクセスしてその値を読み取る場合、読み取った値が意図しない値になる可能性があります。
- スレッドセーフなデータ構造や同期機構を使用することで、これらの問題を回避します。例えば、ロック(Lock)やセマフォ(Semaphore)などの同期機構を使って、複数のスレッドが同時にアクセスする際に、一度に1つのスレッドしかアクセスできないように制御する
- コメントの追加
- コードに対して保守しやすいように分かりやすいコメントが追加されているか。
- 複雑なロジックや処理には説明的なコメントがあるか。返却値が分かりづらい場合コメントで例を記載していると、後々保守が楽になります。
- N+1問題のチェック
- N+1問題の取得処理が発生していないか。
- 適切なクエリの最適化が行われているか。
- フレームワークで用意されている機能を使用しているか
- フレームワークにて既に機能が用意されている場合があるため、そちらを使用することでバグを防ぐ。
コードレビューは、ソフトウェア開発において品質を確保し、チームの成長を促す不可欠なプロセスです。
これらのポイントを参考に、安全で効率的なコードを作成して、プロジェクトの成功に貢献していきましょう!