コードレビューでコメントする最良の方法は何ですか?


13

私のチームは、誰かが何かをチェックインするたびに、コードレビューを開始するためにるつぼ/魚眼レンズを使用し始めました。私たちは3人しかいません。

私の質問は、問題が発生したコード行にコメントを残すにはどうすればよいですか?研磨剤のように見えることなく、自分の主張を伝えたい。

私は高い馬に乗っているように見えて、「私はこのようにやっている...」と言い たくありませんまた、私は権威を持って、 「これはこの方法で行うべきです...

明確にする: これは本当に優れたリソースである、私は上のコメントに見てすべきこと:コードレビューの主観的または客観的(定量化)ですか?、しかし、私はそれにコメントする方法を探しています。


2
FishEyeとCrucible(私のお気に入りのツール)の名前を投げる以外に、ここではプログラミング特有のことは何も見ていません。建設的なフィードバックを提供する方法の
-gnat


@caleb、私は同意しません。これは、他のスレッドよりもコメントの言い回しに関するものです。
HLGEM

1
@HLGEM私はそれがまさに提案されただまされたものについてであると言うだろう:「どうすれば巧妙に提案できる...」。一般に、スタイルや個人的な好みではなく、レビュー中のコードに存在する問題の解決に焦点を当てます。あなたの提案がどのようにコードを改善するかを説明してください。
カレブ

@stinkycheesemanは、あなたのやり方がより良いことを他の人に知らせるだけです。チームのメンバーはプロセスを通じて何かを学びます。
アップトン

回答:


8

まあ私はいくつかの一般的な領域でコメントをする傾向があり、それぞれのタイプは異なって処理されるかもしれません。

必要な変更。これらは、コードが機能要件を満たしていないか機能しないため、本番環境にプッシュする前に修正する必要があると指摘する種類の変更です。私はこれらのコメントを非常に簡単にする傾向があります。要件は...、これはそれを行いません。または、送信される値がnullの場合(特に、送信されるデータに基づいてケースが発生することがわかっている場合)、これは失敗します。

次に、「これは機能しますが、ここでそれを達成するためのより良い方法です」というコメントがあります。あなたはこれらをもっと優しくし、売り込みをもっとしなければなりません。パフォーマンスが向上する可能性が高いため、代わりにこれを行うと言うかもしれません(パフォーマンスが非常に重要なSQLコードを一般的に確認します)。Stack Overflowの質問に答えるときと同じように、なぜそれがより良い選択であるかについて、いくつかの詳細を追加するかもしれません。この特定のコードではこれを変更する必要はなく、将来のコーディングの変更を考慮する必要があることを指摘するかもしれません。基本的にこれらのタイプのコメントで、私は経験の少ない人々に何がうまくいくかについて教育しています。

次に、「これは機能しますが、このように処理します」というコメントがあります。これらはおそらく必要な変更にもなります。これらには、会社の標準または使用が期待されるアーキテクチャに関するコメントが含まれます。標準またはアーキテクチャのドキュメントを参照し、標準に修正するように指示します。コメントは簡単ですが、中立であり、したがって欠落しているか、変数名が命名基準または類似のものに準拠していません。たとえば、SSISパッケージのアーキテクチャでは、パッケージがメタデータデータベースを使用してパッケージに関する特定の情報を保存する必要があり、特定のログが必要です。パッケージはこれらを使用しなくても機能しますが、会社の理由により必要です(たとえば、インポートの成功率を報告するか、受け取ったエラーのタイプを分析する必要があります)。

コードレビューのコメントでしたくないことの1つは、誰かを個人的に攻撃することです。また、彼らがうまくやったことを見つけて、それが良かったと指摘した場合にも役立ちます。ときどきコードレビューから何か新しいことを学び、もしそうならその人にそれを伝えます。


1
パラグラフ#3に関して:私の経験では、より良いテクニックを説明するだけでは十分なことはめったにありません(明白でない限り)。多くの場合、メリットを十分に認識して信者になる前にコードを書き直す必要があります。コメントのみのレビューシステムでは、これは困難です。「私に会いに来てください」とコメントを終える必要があるかもしれません。価値があるように。
mcmcc

@mcmcc、それは公正なポイントです。または、同様の技術が使用されているコードの他の場所を参照することもできます。私は通常、コメントがすべて些細なものでない限り、後で実際のディスカッションをトリガーするためにコメントを使用します。
HLGEM

6

コードがコーディング標準に準拠しているが、別の方法でそれを行う場合は、コードの実行内容が間違っているかどうかを自問する必要があります。

そうでない場合...それはあなたがそれをやった方法ではなく、あなたはそれを去ることができないだけで、「なぜあなたはそれをそのようにではなくこのようにしたのですか?」次に、「私はこのようにしてやったので、あなたもそうすべきだ...」と言わずに、彼らが彼らがしたようになぜ彼らがそれをしたのかを修飾するようにしています

その過程で何かを学ぶこともできます。


4

研磨剤のように見えることなく、自分の主張を伝えたい。

簡潔さを研磨性と混同しないでください。何か問題がある場合は、それを修正しようとしている人が理解できるように文書化します。事実に固執し、エッセイを書かないでください。機知に:

  • これにより、foobleがsnorgatz因子の5グリム以内にある場合、frobnitzが誤動作します。

  • これを行うための確立された規則は、新しく初期化されたSquidgeでfazzatz()を呼び出すことです。これをメソッドにして、常に同じように発生し、重複しないようにします。

    また、私は権威を持ち、「これはこのように行われるべきだ...」のようなことを言おうとしているように思われたくありませんが、彼らがしていることはあまり良くないという点を理解する必要があります。

コードをレビューする目的は、問題に対処するために、通常はより経験のある2番目の目をそのコードに置くことです。あなたが他人の仕事について判断を下す立場にあり、何かが良くないと言う正当な理由があるなら、もしそうでなければ、レビュアーとしてのあなたの責任を無視するでしょう。

意見の相違があり、それらはレビューアとレビュー対象者が自分の立場を守る機会です。あなたが他の方法でピアであり、行き詰まる場合は、先輩を見つけてネクタイを破ります。


snorgatz因子のためだけに+1(他の回答も気に入った)
HLGEM

3

どのような問題に気づいたかによります

  • コピーライト通知が欠落している-一般的で退屈な問題
  • 私が別の方法でそれをするかもしれない場所-通常、声明を出すよりもここで質問をする傾向があり、時には答えが元の解決策を正当化することがあります
  • スタックオーバーフローを引き起こす可能性のあるEqualsオーバーライドなどの明確な欠陥がある場所-赤ペンに到達する-欠陥としてマークし、壊れた理由として非常に明確にする-また、系統的な問題がないことを確認するために他の同様の領域をチェックする

1

私の経験から:

  1. コードのレビュー中は、常にコードの作成者に連絡してください。できればコードはホワイトボードに投影され、あなたとあなたの両方がコードを非常にはっきりと見ることができます。

  2. フレンドリーな会話をしてください。コーディングの大部分に感謝します。コードにいくつかの良い部分があれば、「これは私が見た中で最高です」と彼に言ってください。

  3. あなたのコードをレビューし、有効な点に同意して同意し、修正するように彼に依頼してください。あなたのコードで彼のコメントに敬意を払うと、彼はあなたのコードレビューコメントに自動的に敬意を払います。
  4. コードレビューの問題を修正するために非常に重要であるか、さらに時間が必要な場合を除き、開発者レベルで対処してください。条件不足の問題がある場合は、マネージャーにエスカレーションしないでください。
  5. コードの間違いを指摘するのではなく、「他のコードから学習する」という観点で見てください。
  6. コードレビューセッション中に、過去に犯した間違いと、コードレビューがあなたを助け、別の目があなたを助けたので、大きな生産上の問題を回避した方法を引用してください。
  7. 謙虚になりなさい。彼へのより多くの感謝と少ないコメント:)あなたはコードレビューの間に多くを学び、彼もあなたのコメントを喜んで受け入れます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.