質問

私は2社で働いていましたが、コードレビューに関しては、それぞれ異なる方法論がありました。

最初の会社では、チームリーダーがコードレビューを実施し、すべてのモジュールが完了した後に必要でした。

ただし、2番目の会社では、チームリーダーはコードレビューを実施する必要はなく、機能性と設計上の問題を確認しました。

だから私は混乱しています。コードレビュープロセスは本当に必要ですか?もしそうなら、なぜですか?そうでない場合は、なぜですか?

役に立ちましたか?

解決 10

コードレビュー: :コードレビュープロセスはaでなければなりません 重要 一つには、コードレビューの伝導と彼らが得ている利益のために、誰が利益を得るかを説明します。

1.コードレビューの伝導により会社が取得した利点:頻繁なコードレビューが実施されている場合、会社は最終製品をよりよく最適化された方法で取得でき、市場でブランド名を取得し、会社が現在の取得または改善を支援することができます cmmi レベル。

2.コードレビューの伝導によるチームリーダーへのメリット:私たち全員が知っているように、教師は生徒の答えをより頻繁にレビューしているので、間違いを簡単に識別できるので、間違ったことが可能な領域が可能なアイデアを得ることができます。同様に、チームリーダーはまた、この分野で何がうまくいかないかを知っています。どのようにしてそれらを修正することができますか。また、チームリーダーがジュニア開発者からもニュースアイデアをつかむのを支援します。

3.コードレビューの伝達によるジュニア開発者に利益をもたらす:ジュニア開発者は、コードレビュープロセスに関するアイデアを簡単につかむことができます。また、コード標準とは何かを取得することもできます。たとえば、適切な方法でAPIを作成するために、将来の特別に役立つコーディングの標準化を学習します。彼らがより高いレベルのポストになったとき。

だから私の結論は、コードレビューはすべての人にとって非常に重要なプロセスであるということです[チームメンバーもそうであっても]コードレビューは私たちのコードの不注意な間違いを修正するのに役立つためです。コードで不注意な間違いをします。

他のヒント

個人的には、コードのすべての部分がコードレビューを行うべきだと思います。ジュニア開発者であろうとシニア開発者であるかどうかは関係ありません。

なんで?まず第一に、あなたのタイトルはあなたがどのように開発するかについて何も述べていません、そして、シニア開発者はジュニアから何かを学ぶことができます。私たちの会社で私たちは回転しているので、チームの他のメンバーの1人があなたのコードをレビューします...ほとんど私たちは「ジュニア」とシニアを一緒にチーム化しているので、日常的に言われないすべてのものはフォローアップに巻き込まれました。シニアがジュニアコードを気に入らない場合、彼はジュニアがした理由を聞いてそれを見て、それが将来使用される可能性のある解決策であるかどうかを確認する必要があります...それは賢くなることの問題ですあなたは誰ですか。

コードレビューの重要なことの1つは、あまり良くないことです。あなたがナイスガイである場合、システム内でますます乱雑なコードが進化することを許可するだけです。昨日、私は元雇用されたjuniordeveloperが書いた完全な申請の作り直しを始めました。

チームリーダーがレビューのみを行うべきなのかはわかりませんが、開発されていないコードを「戦う」ことを選ぶことを恐れていない人が必要であり、コードがどのようにすべきかを気にする人でなければなりません。なれ。すべての企業が実際に自分が何をしているかを気にする人々を雇うわけではありません。そして、それらの悪い卵は、肩をすくめて「OK」と悪いコードに「OK」と言うために、コードレビューを行うことを許可されるべきではありません。

基本的に、経験に関係なく、すべてのプログラマーにコードレビューが必要です。これはソフトウェア開発の品質管理であり、オープンソースが非常に高品質である理由の1つです。

編集:その理由は、今日のコードレビュアーが後でメンテナーとまったく同じ役割にあるためです。コードが今日彼に意味がない場合、それも後で意味があり、バグをより高価にすることができます。したがって、開発者がまだコードを覚えている間、今日それを理解できるようにします。また、レビュアーは、開発者が逃したバグや脱落を見ることがあります。

残念ながら、それをやりたいと思う人はほとんどいませんが、ビジネスの観点から見ると必須であるべきです。

私は、コードレビューが現在要件であるが、3年前にはそれほど前ではなかった場所で働いています。それは、私たちのコードで、そして他の人が後でコードを維持する能力を大幅に改善しました。シニアの非常に経験豊富な開発者でさえ、QAがそれらを見つける前に、または顧客が見つける前に、コードレビューで簡単かつ静かに修正できる間違いを犯します。さらに、Orginal開発者以外の少なくとも1人の人は、コードに適しています。

多くの場合、組織がコードレビューで行ったように、組織がそれに新しいことを試みるとき、変化には多くの抵抗があります。コードレビューを使用して、私はそのどれもほとんど見ていませんでした(私たちも正式なQA部門を取得することが不安定でした)。値を確認するには、1つまたは2つのレビューのみが必要です。

私は、他の誰かの仕事のコードレビューを行うこと、または私のコードをレビューすることの両方について、私が考慮していなかった新しいテクニックを見つけました。コードレビューを行うことにより、コードレビューにどのように応答したかによって、より迅速に新規採用者の能力の問題が比較的迅速に発見されました。私たちは、メンテナンスが明確ではないセクションの厚いプログラミングで、今完全に明確に見えるものを学びました。これは非常に貴重です。必要なのは、なぜ何かが行われたのかというコメントだけかもしれません。レポートを実際に正しい情報を得るために修正する必要があるデータベース設計に関するいくつかの根本的な誤解を見つけました。

多くの場合、私がコードレビューで見たのは、他の誰かに何かを説明するというまさにその行為によって、開発者が頭の中で電球をオンにし、レビュアーが見なかったバグがあることに気付くということです。

また、少年はレビューをコードできます。カウボーイプログラマーは、標準に従わないか、義務付けられたツールを使用し、コードが他の誰にも維持できないものになります。そして、それは彼らにプログラムを手に入れるか、出て行くことを強制することができます。

コードレビューに最も抵抗力がある人々は、多くの場合、組織がコードのレビューに合格できないことを心の中で知っているため、組織が最も取り除く必要がある人々です。

アジャイルの男は次のように言います:「コードレビューは必要ありません。ペアプログラミングを行い、良いテストを書くだけです」:)

コードレビューは、チームを通じてKnowlegeとGood Practiceを広める良い方法です。私の経験では、すべてのコードが確認されていることを確認し、誰がどのコードをレビューするかを変更しようとすることをお勧めします。

私の現在のチームでは、Everyonesのコードが均等にレビューされており、プログラマーとレビュアーの両方がコードをリリースする前に、コードを満足させる必要があります。これは、より多くのジュニア開発者、他のレビューをレビューするジュニア開発者、またはお互いをレビューする他のシニア開発者によってレビューされている上級開発者にも同様に適用されます。レビュアーが経験の浅い場合、または特定のコードのレビューを快適にレビューしていない場合、グループとしてレビューを行うために別の開発者(および元の開発者)とチームを組みます。

私は20年以上ビジネスに携わっており、ソフトウェア会社やさまざまなビジネスで働いており、これらの場所はどれもコードレビュープロセスを持っていませんでした。しかし、私はそれを持っていることの利点を理解し、感謝することができます。基本的に、私が理解しているように、彼らは標準の順守を確保するために使用されるべきです。これは、他の人が将来コードをより簡単に維持できるようにするために従うべきです。コードの読みやすさもレビュープロセスでチェックされる可能性があります。これにより、メンテナンスがコードで効果的に機能することが保証されるためです。

現在、私は単一の開発者である小さな店で働いています。時折、バックログを支援するために請負業者を連れてきました。これらの請負業者の少なくとも1つまたは2つは、必ずしも私の基準や企業の基準を満たしていなかったコードを書いていますが、それはうまく機能し、少なくともある程度理解できました。私がこの問題を経営陣に指摘したとき、彼らは気にしませんでした。だから、それは会社に依存するだけであり、クリーンではないかどうかは、コードが希望する製品であるかどうか、またはお金のためにうまくいくものが必要な場合です。

明らかに開発者として、そしてコードを維持しなければならない人として、私はある種の標準に従うクリーンコードで作業したいと思いますが、私はいつもその贅沢を持っているわけではないので、私はそれを最大限に活用し、私が持っているものに対処します、たとえそれが私自身の標準でいくつかのコードを書き直さなければならないことを意味するとしても。

コードレビューは、問題が簡単に(および安く)修正しやすい場合に、ソフトウェアライフサイクルの早い段階で欠陥を特定できます。で SmartBear 私たちはaを開発しました ピアコードレビューツール また、コードレビューを効果的にする方法についても多くの調査を行ってきました。お客様からのデータに基づいて、コードレビューで見つかった欠陥は、QAで見つかった欠陥よりも見つけて修正するのが8〜12倍安くなります。コスト削減だけでコードレビューに値しますが、それ以上の価値があります。コードレビューは、チームのすべての人がソフトウェア開発者として学び、改善するための優れた方法です。

コードレビューの効果が低下する可能性のあるトラップがいくつかあり、組織がそれらの1つに巻き込まれているようです。人々ではなく、コードに関するコードレビューを行います。タイトルはコードレビューでは何も意味しません。権限への訴え(私がチームのリードであるため、私のやり方でやらなければなりません)。代わりに教えてください。シニアエンジニアは、それを要求するだけでなく、なぜ自分のやり方で行うべきかを説明する必要があります。あなたが概念を説明するのに苦労しているなら、それはあなたにとっても学習体験です。二人とも、あなたが取り組む努力のために、より良い開発者になるでしょう。

すべてのコードをレビューするコードはやり過ぎだと思います。すべてのコードを確認するのにかかる時間は、他の場所でよりよく使うことができます。 Alterntivley重要なコードや特に複雑なピースにはコードレビューが必要だと思いますが、確かにすべてのコード行ではありません。

私の意見では、会社が使用するコードは、ジュニア開発者であろうと上級開発者によって書かれたかどうかにかかわらず、常にレビューする必要があります。なんで?なぜなら、コードにいくつかのバグがあった場合はどうなりますか?そして、このコードが使用されている間、プログラムがクラッシュした場合はどうなりますか?これらのことが起こらないようにするには、すべてのコードを使用する前にレビューする必要があります。

しかし、コードを確認しない企業はどうですか?彼らはおそらく、消費者に「クラッシュ」と言うように、多くの技術的な問題とたくさんの企業です;-)。

それで、あなたのすべての質問に答えさせてください:

  • はい、レビュープロセスが必要です。
  • なんで?私が上で述べた理由のため。

コードをチェックする前に、またはその後のバグのためにアイデアを妨害することの違いは何ですか?それはあなたのエゴですか?

コードレビューのメリットなどを無視することはできません。コードレビューは、少数のスーパープログラマーだけが把握できるという非常に複雑なプロセスではありません。能力があるか、自己編集する時間を持っているプログラマーやプロの作家がたくさんいるかどうかはわかりません。

数ヶ月後にコードの行に戻って、私が何を考えているのだろうと思ったことはありますか?コードレビューでキャッチする可能性が高くなるでしょう。あなたはそれを捕まえただけで、あなたはしばらく前のプログラマーよりもわずかに優れています - 私は願っています。

IMOコードレビューは、すべての開発者にとって不可欠なはずです。 しかし レビューをしている人々が自分自身が有能である場合にのみ。過去に私はレビューでコードを拒否しました。 SOLID, 、依存関係の注入を行い、論理設計に従ってコードを名前空間とフォルダーに編成し、コードを検証するための小さな単体テストスイートを含めました。このコードは「複雑すぎる」と拒否され、会社がコードを書いた方法ではなかったため、すべてを一緒に詰め込んでテストを削除する1つのクラスを使用するように言われました。

そのようなコードレビューは価値がありませんが、有能なチームとのコードレビューは、デザインについて何かを照らすことができます(たとえば、xとyを実行する必要がありますが、zではない理由)、または実際の欠陥を示します(xを実行するとyが失敗します。間違った理由で)。

もちろん、コードレビューはそうではありません 必要です. 。繰り返しになりますが、テスト、継続的な統合、ソースコントロール、顧客の関与、プロファイリング、静的分析、まともなハードウェア、ワンクリックビルド、バグトラッキング、リストはどちらも続きません。

コードレビューに加えて、私が上記で言及したことは、ソフトウェアの品質を確保するのに役立つツールです。スキル、運、時間、決意の組み合わせで。あなた できる このようなものなしで高品質のソフトウェアを配信しますが、あなたが しない.

あなたのシナリオでは、混乱することは何もありません。すべての組織がすべてのベストプラクティスにふけるわけではありません。彼らはそれに反対するかもしれません、彼らが実装することは異なるベストプラクティスと矛盾するかもしれません、または彼らは、それを実装するオーバーヘッドがこの時点で彼らにとって大きすぎると考えるかもしれません。彼らの状況に応じて、彼らはそうすることで正しいかもしれません、または彼らは虚偽の経済を作っているかもしれません。一部のツールの場合(例:ソースコントロール)、回収/努力比率は非常に優れているため、それを使用することは簡単です。他の人にとってはそれほど明確ではありません。

コードレビューが重要なオーバーヘッドを導入するプラクティスであることは間違いありません。このため、組織は、それをまったくしないか、特定の状況でのみ行うことで、その間接費を最小限に抑えようとします(例:ジュニアチームメンバーや特に毛むくじゃらの変更)。コストよりも(バグを捕まえたり、技術的な負債を減らしたり、知識を共有したりすることで)より多くの報酬を返すことは必ずしも明らかではありません。その回収の大部分は定量化するのが困難ですが、組織がレビューを行うのに費やす時間の数を数えるのは非常に簡単です。定量化するのが最も簡単なビット(バグ数の減少)は、他の要因に起因することが簡単です(「もちろん、バグが少なく、より成熟しています」)。

トルコでオンラインフットボールゲームを作成しています。多くのユーザーとゲームマスターは、機能に役立ちます。また、彼らは必要な機能についてコメントします。したがって、多くのユーザーがいる場合、バッジを支援または取得するために機能テストを行うことができると思います。フォーラム、サポートチーム、プライベートテスト環境を備えた開発者、ゲームマスター、ユーザーのコロブレーションは、ソーシャルプロジェクトを作成します。

確かにコードレビューと開発チーム間の経験を共有することが必要ですが、それが重要でない場合は自分自身を強制する必要はありません。

第二党の検査がいかに冗長であるかは、あなたがより機敏であろうと、あなたのプロセスの滝であろうと、あなたのライフサイクルに依存すると思います。高レベルのデザイン/検査、およびより詳細なレベルの設計検査を行うことは合理的だと思います。また、検査するチームの複数のメンバーを巻き込むことも良いと思います。

彼らはほとんど経験がないので、彼らは絶対に必要です。

ライセンス: CC-BY-SA帰属
所属していません softwareengineering.stackexchange
scroll top