コードレビュー手法の比較

多くの開発はロシア語のコードレビューまたはコードレビューの概念に精通していると思います(この用語は、コードレビュー、コードインスペクション、またはコードレビューとも呼ばれます-以降、統一のため、「コードレビュー」オプションが使用されます)。 最近、私はこのトピックに関する知識を「分類」して分類する必要に直面しました。 結果はこの記事です。 コードレビューをプロダクションプロセスに導入することを考えている人を助けるだけでなく、それが役立つことを願っています。

毎分重量

コードレビューは、ソフトウェアのトラブルシューティングに最も効果的な方法の1つです。 調査は人間によって行われるため、検出が困難なエラーや自動手段では検出できないエラーなど、幅広い種類のエラーを見つけることができます。 もちろん、コードレビューは、コードアナライザーや単体テストなどの他のエラー検出技術の使用を無効にするものではありません。 残念ながら、すべてのプログラムの欠陥を確実に検出する方法はありません(研究では、コードレビューの有効性は通常、アプリケーションで見つかったエラーの30〜50%と推定されます)。



バグの発見は、コードレビューの唯一のタスクではありません。 さらに、コードの概要には、さらにいくつかのプラスの機能があります。





これらすべてのために、コーディングに費やすことができる時間を支払う必要があります。 それにもかかわらず、少なくともある程度の観点で設計されたプロジェクトでは、後に痙攣する「dopila」ではなく、最初に高品質の製品が作成されるため、将来に費やす時間は100倍になります。



次のタイプのコードレビューを区別できます。





各オプションを個別に検討します。



正式なコード検査



正式なコード検査は、その名前が示すように、正式なコードレビュー手順です。 マッコネルによると、彼女は次のように見えます。



検査コーディネーターは、検査会議の日付と検査者を設定します。検査者は、会議の前に検査済みのコードフラグメントを個別に検査する必要があります。 指定された時間に、検査コーディネーター、秘書、コード作成者、検査官が集まります。 検査官またはリーダーの誰かがコードを1行ずつ読み始めます(便宜上、事前に行番号と一緒に印刷することをお勧めします)。 インスペクターは発見した問題を示し、コードの作成者はインスペクターの質問に答えます。エラーが実際に存在することに全員が同意した場合、秘書はそれを書き留めます。 検査コーディネーターは、たとえば、1つのエラーに関する議論が遅れないように、プロセス全体を監督します。 検査の終了時に、結果を含むレポートが作成されます。



正式な検査のより詳細な例については、 こちらをご覧ください



利点:




短所:






非公式のコード検査



非公式の検査には、正式な検査とは異なり、明確なルールがありません。 たとえば、これは次のように発生する可能性があります。コードの作成者は、コードを公開する前に、最初の開発者をコンピューターに呼び出し、そこで自分が書いたものを見せて伝えます。 審査官は文章を掘り下げて質問し、自分の考えを表現しようとします。 もちろん、この方法では、効率はそれほど高くありませんが、そのような検査にはほとんど時間がかかりません。



利点:




短所:






コードを読む



コードを読むことは、著者の存在なしに、他の誰かのコードの開発者による独立した研究です。 この方法は、ここで説明するものの中で最も単純で最も一般的なものです。開発者は、とにかく誰かのコードを読む必要があったと思います。 オープンソースの世界は言うまでもなく、多くの場合それが唯一の利用可能なコードレビュー方法です。



利点:




短所:






ペアプログラミング



ペアプログラミングは、コードレビューの極端な方法です。レビューは継続的に実行されます。同じコンピューターの2人の開発者が、同じマウスとキーボードのセットで1つの問題を解決します。 ペアプログラミングは、極端なプログラミング方法論の出現後に広く普及しましたが、以前は積極的に使用されていました。 多くの場合、ペアプログラミングは自発的に使用されます。多くの人は、難しいタスクを解決するために、コンピューターの別の開発者のところに行かなければならなかったと思います。



利点:




短所:




上記にいくつかの単語を追加したいと思います。 ご覧のとおり、いくつかの欠点はメリットに起因しています。 これは驚くべきことではありません。一見すると一見すると思われるかもしれませんが、ペアプログラミングは非常に単純ではありません。 したがって、ペアで作業を開始すると、すぐに結果が得られることを期待しないでください。 ある程度の経験を積んだ後にのみ、ペアプログラミングが実を結び始め、さらに、いくつかの悪影響を最小限に抑えることが可能になります。



何を選ぶ?



これで、どのメソッドをどのケースで使用する価値があるかを判断できます。





ご覧のとおり、十分なオプションがあります。自分に最適な方法を選択できます。 さらに、技術の組み合わせを禁止する人はいません(たとえば、チームの一部がペアで作業し、他の部分は単独で作業しますが、それらによって作成されたコードは必ず検査されます)。 より簡単な方法から始めて、徐々に複雑な方法に移ることができます-主なことは開始することであり、肯定的な効果はすぐに来ると思います。



文学



  1. 完全なコード(コード完了)。 スティーブマッコネル 第21章共同構築。
  2. 極端なプログラミング:プロセス設定。 最初のステップから最後まで(Extreme Programming Applied:Play to win)。 ケン・アウアー、ロイ・ミラー 第14章単独での作業を停止します。



All Articles