インターネット開発: 効率的なコードレビューのための 10 の経験

インターネット開発: 効率的なコードレビューのための 10 の経験

コードレビューは、ソフトウェア開発でよく使用される方法です。QA テストと比較すると、アーキテクチャやタイミングに関連する問題など、見つけにくい問題を見つけやすくなります。また、チーム メンバーのプログラミング スキルの向上やプログラミング スタイルの統一にも役立ちます。

1. コードレビューには優れたチーム文化が必要

チームは、コードレビューは個人にチェックポイントを設定するのではなく、チーム全体の能力を向上させることを目的としていることを認識する必要があります。

「A のコードには B によって発見されたバグがあるため、A は能力がなく、B の方が優れています。」このような罠は簡単に広がり、チーム内のコラボレーションに影響を与える可能性があるため、回避する必要があります。

さらに、コードレビュー自体が開発者の能力を向上させ、開発者が自分の間違いから学び、他の人のアイデアから学ぶことを可能にします。開発者がこのプロセスに抵抗したり嫌ったりすると、この目標は達成できません。

2. レビュー中の問題発見率を慎重な評価基準として使用する

コードレビュー中に問題が見つかった場合、その問題を発見した人にとっては良いことであり、奨励されるべきです。しかし、私たちは捕まった者を罰するためにこの方法を使うことを支持しません。ソフトウェア開発ではバグは避けられませんが、過度な要求は逆効果です。さらに悪いことに、コードレビューによって参加者が責任を取ることを恐れ、レビュー中に問題を指摘することを嫌がるようになると、コードレビューには価値も意味もなくなります。

3. レビューするコードの量を制限する

Cisco の SmartBear が実施した調査によると、毎回 200 ~ 400 行のコードをレビューするのが最も効果的です。一度にレビューするコードの量が増えるほど、問題が見つかる可能性は低くなります。具体的な比率は次の図に示されています。

実際には、コードレビューの最適な量は開発プラットフォームと開発言語によって異なることがわかりました。しかし、このプロセスは精神的に非常に負担がかかるため、一度にレビューする数を制限することが重要です。時間が経つにつれて、コードはレビュー担当者の目には論理的なつながりのない単なる文字に見えてくるので、当然、出力は多くなくなります。

4. 質問がある場合はレビューをご覧ください

すべてのコードレビューでは、まずレビュー担当者自身の経験に基づいて起こりうる問題について考え、レビュー作業を通じてそれらの問題が解決されたかどうかを確認するように依頼しています。 1 つのコツは、ユーザーに表示される関数から始めて、より複雑な使用シナリオを想定し、コードを読みながらこの使用シナリオが正しく機能するかどうかを確認することです。

この手法を使用すると、レビュー担当者はコードに関与し、真に没頭していると感じることができ、効率が向上します。武侠小説を読んでいると寝つきにくいのは誰もが知っていますが、専門書を読んでいると寝つきやすいのです。その理由は、武侠小説の方が没入感を作りやすいからです。

いくつかの研究では、単位時間あたりにレビューされるコードの量を制御するために、毎回目標を設定することを提案しています。この方法は、私たちの実践では非常に機械的かつ手続き的であり、上記の方法ほど効果的ではありません。

5. すべての質問と変更は元の著者によって確認される必要があります

レビュー中に問題が見つかった場合は、元の著者が確認する必要があります。

これには 2 つの目的があります。

(1)問題が存在することを確認し、解決する

(2)原作者に自分の問題や欠点を理解してもらい、成長を手助けしてもらう

場合によっては、効率性を追求するために、経験豊富なレビュー担当者がコードを直接変更したり、コード全体をリファクタリングしたりすることを好むことがありますが、これはチームの効率性の向上にはつながらず、リファクタリングによって新しいバグが導入される可能性が高くなります。通常、これは推奨されません。

6. コードレビューを利用して個々の「主体性」を活性化する

プロジェクトのスケジュールが厳しく、完全なコードレビューができない場合でも、少なくとも部分的なコードレビューは行う必要があります。このとき、いくつかの重要な部分をランダムに抽出すると良いでしょう。

この背後にある論理は、ソフトウェア開発は非常に創造的な仕事であり、開発者は強い自己動機と自己実現の要件を持っているということです。開発者に、自分が書いたコードは他の人に読まれ、レビューされる可能性があることを知らせることで、特に品質の低いコードや低レベルのエラーのあるコードをピアレビューに提出することを避けるよう、開発者が集中できるようになります。オープンソース ソフトウェアもこの考え方をうまく活用してコードの品質を向上させています。

7. カジュアルでリラックスした雰囲気の中でコードレビューを実施する

前述したように、コードレビューは精神的に負担のかかる作業です。参加者は比較的リラックスした環境でこの作業を行う必要があります。したがって、いくつかのプラクティスで推奨されているような会議形式でのコードレビューは効果的ではないと考えています。会議が長くなると非効率になりやすいだけでなく、会議中に生じる論争や考えが複雑な作業に役立たないからです。

8. コードを提出する前に自己レビューし、コードの説明を追加する

すべてのチーム メンバーは、コードを他のメンバーにレビューのために送信する前に、レビューを実施する必要があります。この自己修正レビューでは、コードの正確性をチェックするだけでなく、次のタスクも実行できます。

(1)他の人が確認できるように、変更の理由を説明するコメントをコードに追加します。

(2)コードの読みやすさを向上させるために、コーディングスタイル、特にいくつかの主要なデータ構造とメソッドの命名を修正する。

(3)全体的な視点から設計を見直し、すべてのシナリオが十分に考慮されているかどうかを確認します。実装前の設計に欠陥があった場合は、この段階で修正できます。

実際には、元の作成者だけがコードレビューを実行しても、コードの品質を大幅に向上できることがわかっています。

9. 実装中にメモを取ると、問題検出率が大幅に向上します。

メンバーは、コード内でコメントを使用したり、簡単な個人文書を保存したりするなど、コーディング中にメモを取る必要があります。これにはいくつかの利点があります。

(1)省略を避ける。コーディング中に思い浮かんだ問題はすべて記録され、レビュー フェーズで再確認され、解決されたことが確認されました。

(2)研究によれば、誰もが何らかの繰り返しの間違いを犯すことに慣れている。このような問題はコーディング中に記録され、レビュー時の検査の基礎として使用できます。

(3)繰り返しメモを取り、復習中に同様の問題を発見すると、そのような問題の頻度は大幅に減少する。

10. 軽量コードレビューには優れたツールを使用する

「仕事をうまくやりたかったら、まず道具を研がなければなりません。」 Bitbucket が提供するコード ホスティング サービスを使用します。

各チームメンバーは独自に機能を開発し、プルリクエストの形式でコードをレビュー担当者に送信します。レビュー担当者は Web ページ上のコードを簡単に読み、コメントなどを追加することができ、元の作成者にはレビューの意見を話し合うための電子メールリマインダーが自動的に送信されます。

チームメンバーが世界中に散らばっている場合でも、Bitbucket が提供するツールを使用すればコードレビューを適切に行うことができます。

出典: Jianguoyun (http://jianguoyun.com/)。


原題: インターネット開発: 効率的なコードレビューのための 10 の経験

キーワード: インターネット、ウェブ開発、効率的な生成、コードレビュー、10、コード、レビュー、コード、再、ウェブマスター、ウェブサイト、ウェブサイトのプロモーション、収益化

<<:  ウェブマスターが検索エンジンの変更からガイダンスのアイデアを得る方法

>>:  Baidu のハイパーリンク不正アルゴリズムから見る検索エンジンの価値

推薦する

「ニュースクラウドファンディング」ウェブサイトは短命だと非難され、閉鎖のジレンマに直面した

【はじめに】クラウドファンディングサイトの「プロジェクトカテゴリー」には、テクノロジー、デザイン、ア...

bandwagonhost/bandwagonhost-13.99ドル/年額256MBメモリ/10GBハードディスク/500GBトラフィック/Phoenix

bandwagonhost/Bandwagonhost クリスマスプロモーション、生涯 30% オフ...

バグの書き方、一般的なOOM例外分析を教える

Java 仮想マシン仕様によれば、プログラム カウンタに加えて、仮想マシン メモリの他のいくつかのラ...

ftrack レビューが Alibaba Cloud Marketplace で利用可能になりました

2018 年 9 月、世界有数の映画およびテレビ番組制作パイプライン管理ソフトウェア企業である ft...

ビリビリと西瓜動画、どちらも中国のYouTubeにはなれない

2018年6月20日、インターネット動画コラム「CamLogic」が最後の動画を更新しました。 「イ...

thaihosting: ネイティブのタイVPSとタイのサーバー、追加の専用帯域幅付き

タイ企業であるThaihostingは、1995年からIT関連事業に携わってきたと主張している。 T...

電子商取引イノベーションサービス事例:ビジュアル商品検索

1. データマイニングと精密マーケティングサービス2. ビジュアル商品検索(画像コンテンツ認識検索)...

dediserve-7.5 ユーロ/KVM/2G メモリ/30g SSD/1.5T トラフィック/香港/シンガポール/12 コンピュータ ルーム

Dediserve は香港とシンガポールにデータセンターを新たにオープンしました。新しいデータセンタ...

ユーザーの告白: FriendNet が歴史の舞台から去る時が来た

長い間Renrenを利用していませんでしたか?友達ネットワークがあることをほとんど忘れていましたか?...

私がウェブサイトを台無しにしてしまった経緯

はじめに:2月にSEOに触れ、3月中旬に熱意を持って現在のサイトを引き継ぎました。では、これ以上前置...

ウェブサイトを再構築する際に既存のランキングを保護する方法

ウェブサイトを再構築する目的は、パフォーマンスを向上させることです。したがって、最初に行うべきことは...

落下防止携帯電話に関するアップルの新特許:画面が自動的に保護シートを拡張

appleinsiderによると、米国特許商標庁は「電子機器のアクティブスクリーン保護」メカニズムと...

2021 年にクラウド コンピューティング分野にはどのような新たな変化があるでしょうか?

過去数年間、クラウドはビジネス変革と IT インフラストラクチャの近代化のバックボーンとして登場しま...