相対的なメリットとデメリットに関するご自身の質問にお答えいただいたと思います。
多くの場合、コードレビューは非常に骨の折れる作業になり、コードのレビューにかかる時間を増やすと、事態はさらに悪化します。私の見方では、レビュープロセスを非常に短くし、細かい点に過度に労力をかけたくないと考えています。したがって、重要なのは、チームにビジネス価値を提供するレビュープロセスの内容を決定することです。
スタイルの問題は、おそらく私が優先度の最も低いものとして置く項目の1つです。確かに、コードを整然と均一にフォーマットすることで理解が容易になりますが、スタイルの混乱により、コードのプロセスが非常に非効率になる可能性もあります。それでもスタイルの問題が気になる場合は、スタイル/フォーマットチェックツール(例:C#のStyleCop)を使用すると、スタイル固有の問題を最後まで残して、スタイルに関連する意思決定プロセスを行うことができます。開発者の手から、より重要なもののために彼らの考えを解放します。選択した言語に対応する製品がない場合は、単純なパーサーを作成して、コードをすばやくスキャンし、そのような問題を見つけることができます。
メモリリークおよびその他のパフォーマンス固有の問題は、確認するためにレビュープロセス次第であってはなりません。もちろん、明らかに大きな問題の原因となるものを見つけた場合は指摘する必要がありますが、コード内の小さなメモリ/パフォーマンスの問題をすべて追跡することがコードレビューの目的ではありません。これが優れたプロファイリングツールの目的です。開発している言語に最適なツールを見つけることができれば、1ペニーを費やす価値があります。
ロジックの問題はせいぜい問題であり、これらは、コードをレビューするときに、多くの貴重な時間を本当に吸い込む可能性があるものです。これをすべてコードレビューに任せるのではなく、単体テストを使用する必要があります。はい、テストでも間違っている可能性がありますが、最初にテストを開発し、SRPとDRYプリンシパルに固執し、容赦なくリファクタリングし、仕様を検証する手段としてユニットテストを定義すると、最終的にははるかに少ないロジック関連の問題。コードの作成後にテストを行うと、発生する可能性のあるロジックの問題に対処する可能性が低くなり、コードの特定の経路をテストすることを忘れる可能性が高くなります。
それで、ここで提案したようにすべてを行う場合、コードレビューで何をする必要がありますか?簡単な答えは、コードレビューがかなり単純なプロセスになり、特定の要件がテストでどのように取得され、解決された問題にそれらのテストがどのように適用されたかをコーダーがレビュー担当者に説明することです。最も重要なビジネス価値を測定できる場所であり、特にそのコードを後で維持する必要がある場合は、コードをより的確に確認し、テストをより徹底的に分析する傾向があります。テストコードのレビューをさらに簡単にするには、仕様がコードでテストの実行方法についてのほぼ平易な英語の説明としてコードにキャプチャされるため、優れたBehavior Drivenテストフレームワークを使用すると、レビューを大幅に簡略化できます。テストをサポートするすべてのコードに対して詳細なチェックが実行されます。BDDフレームワークがテストをプレーンテキストのストーリー/機能ステートメントで一覧表示する素晴らしいテキストレポートを作成する場合、プロセスはさらに簡単になります。これらはすべて、従来のコードレビューと同じくらい価値のある非常に効率的なプロセスになりますが、はるかに迅速に、より焦点を絞った方法で実行できるため、些細なことや二重チェックの行き詰まりを回避するのに役立ちます。それはしばしばあなたをどこにも導きません。この無駄のないアプローチは、テストとコーディングに費やす時間を増やし、管理プロセスに費やす時間を短縮します。しかし、より迅速かつより集中的に実施できるため、どこにも行かないことが多い些細な問題や再確認に悩まされることを回避できます。この無駄のないアプローチは、テストとコーディングに費やす時間を増やし、管理プロセスに費やす時間を短縮します。しかし、より迅速かつより集中的に実施できるため、どこにも行かないことが多い些細な問題や再確認に悩まされることを回避できます。この無駄のないアプローチは、テストとコーディングに費やす時間を増やし、管理プロセスに費やす時間を短縮します。
では、それらのメトリックについてはどうでしょうか?すべての問題が単に「バグ」として扱われる場合、本当に心配する必要がある唯一の測定基準は、リリースの前後に発生するバグの数、および特定されたバグが特定の方向に傾向があるかどうかです。半端な問題追跡システムを使用している場合でも、これらの情報はすべて手元にあり、レビュープロセスでそれらを特定する必要があるかどうかを心配する必要はありません。結局のところ、チームはソフトウェアを書くことで得意なことをしたいと考えています。管理上の問題に多くの時間を費やして、会社の1人か2人の個人にしか関心のないものを提供することがよくあります。