web-dev-qa-db-ja.com

コードレビューの目的は何ですか

私は、コードレビューの価値で組織を売り込もうとしています。私はそれらが採用されたいくつかの場所で働いてきました。私はそれらがスタイリングの選択や機能的な決定を軽視するために使用されているのを見てきました。また、危険なものが何も実装されていないことを確認するための腸のチェックにすぎないことを確認しました。私の直感は、最も効果的な目的は2つのオプションの間のどこかにあるということです。

では、コードレビューの目的は何ですか?

77
SoylentGray

コードレビューを実施する理由はいくつかあります。

  • 他の開発者の教育。残りのソフトウェアを理解できるように、すべての人が欠陥の修正または拡張に関連する変更を確認できるようにします。これは、統合する必要のあるコンポーネントや、特定のモジュールを見ずに1人で長時間作業する可能性がある複雑なシステムで作業している場合に特に役立ちます。
  • 欠陥や改善の機会を見つける。成果物コードとテストコードおよびデータの両方を調査して、弱点を見つけることができます。これにより、テストコードが堅牢で有効であり、設計と実装がアプリケーション全体で一貫していることが保証されます。追加の変更が必要な場合は、エントリポイントに近い機会をキャッチします。

レビューを実施するためのいくつかのビジネスケースがあります。

  • インジェクションの近くでやり直す必要のある欠陥や問題を見つける。これは安いです。
  • システムとクロストレーニングの共有理解。開発者が変更を加えるまでの時間を短縮する時間が短縮されます。
  • システムに可能な拡張の識別。
  • テスターが適切なカバレッジを提供していることを確認するために実装を開放します。テストの観点から、ブラックボックスをグレーボックスまたはホワイトボックスに変換します。

ピアレビューの利点と実装戦略に関する包括的な議論を探している場合は、チェックアウトすることをお勧めします ソフトウェアのピアレビュー:Karl Wiegersによる実践ガイド

75
Thomas Owens

コードレビューは知識の伝達のためのツールです。

  • 開発者が互いのコードを確認するとき、システムのすべての領域に精通します。これにより、プロジェクトのバス係数が削減され、開発者が作成していないシステムの一部でメンテナンスを行う必要がある場合に、開発者の効率が向上します。

  • ジュニアプログラマーがシニアのコードをレビューするとき、ジュニアプログラマーは、そうでなければ経験を通してのみ学んだトリックを取り上げることができます。これは、過度に複雑なコードに対する修正としても機能します。

    徹底的なコードレビューでは、さまざまなドキュメントを頻繁にチェックする必要があります。言語やAPIを学ぶのに最適な方法です。

  • 上級プログラマーが後輩のコードをレビューするとき、これは問題を解決する機会ですbefore彼らは技術的負債に変換されます。コードレビューは、ジュニアプログラマーのメンタリングに適した設定です。

コードレビューは以下についてではありません:

  • …バグを見つける。それがテストの目的です。コードレビューで問題が発見されることは依然として頻繁に起こります。

  • …スタイルの問題に細心の注意を払う– 1つのスタイルで解決し、自動フォーマッタを使用してそれを強制します。しかし、自動化ツールがチェックできないことがたくさんあります。コードレビューは、コードが十分に文書化または自己文書化されていることを確認するのに適した場所です。

51
amon

私が個人的にコードレビューから得た最も価値のあることは、コードが他の人にとってclearであるという自信です。変数には明確な名前が付けられていますか?コードの各チャンクの目的はかなり明白ですか?コメントで明確化されている何かがありますか? Edgeケースとパラメーターの有効な値は、コメントで概説され、コードでチェックされますか?

12
user25946

他のすばらしい回答ではカバーされていない2つの領域を追加したいと思います。

コードレビューの大きな理由の1つは Hawthorne効果 であり、これは次のように変換されます。誰かが後でコードを確認することがわかっている場合は、そもそもコードを書くほうがはるかに優れています。 。

もう1つの大きな理由は、より安全な開発方法を実践するためです。適切なコードの重要性を理解するには、 Appleのgoto失敗 (偶発的なコードの重複行)または Heartbleedバグ (入力検証の基本的な失敗)を確認するだけです。安全な開発ライフサイクルでのレビュー。

9
Chris Knight