タグ付けされた質問 「code-reviews」

このタグは、コードレビューとコードウォークスルーの実践に関する質問に使用します。既存の動作するコードのレビューについては、http://codereview.stackexchange.comを参照してください

19
読みやすく保守が容易なコードを書いたかどうか、どうやって知るでしょうか?
作成したコードが読みやすく、理解しやすく、保守しやすいことをどのように知ることができますか?作成者の観点からはもちろん、作成者がコードを作成および編集したため、最初からコードは読み取りおよび保守が可能です。しかし、私たちの職業がコードを測定できる客観的で定量化可能な標準がなければなりません。 これらの目標は、元の作者の専門家のアドバイスなしにコードを使用して次のことを実行できる場合に満たされます。 コードを読んで、基本的なレベルでロジックの流れを理解することができます。 入力、出力、アルゴリズムを含めるためにコードが何をしているのかをより深いレベルで理解することができます。 他の開発者は、バグ修正やリファクタリングなど、元のコードに意味のある変更を加えることができます。 元のコードを活用するクラスやモジュールなどの新しいコードを作成できます。 コードの品質を定量化または測定して、読み取り、理解、および保守が可能になるようにするにはどうすればよいですか?

22
ありそうもないエッジケースに関するコードレビューの不一致をどのように処理しますか?
私はパスカバレッジチームのロボティクススタートアップで働いており、プルリクエストを送信した後、コードがレビューされます。 私のチームメイトは、チームに1年以上在籍しており、必要と思われるよりもはるかに多くの作業を行うことを示唆するコメントをコードに書きました。いいえ、私は怠け者の開発者ではありません。良いコメント、変数名、インデントを持ち、ケースを適切に処理するエレガントなコードが大好きです。しかし、彼は私が同意しない別のタイプの組織を念頭に置いています。 例を示します。 私は、自分が作成した遷移発見アルゴリズムの変更に関するテストケースを書くのに1日を費やしていました。彼は、私が発生する可能性が極めて低い不明瞭なケースを処理することを提案していました。実際、それが発生する可能性すらわからないのです。私が作成したコードは、元のテストケースのすべてと、私が見つけたいくつかの新しいテストケースで既に機能しています。私が作成したコードは、毎晩実行される300以上のシミュレーションに既に合格しています。ただし、このあいまいなケースを処理するには13時間かかり、ロボットのパフォーマンスを改善するために費やすことができます。明確にするために、これまで使用していた以前のアルゴリズムもこの不明瞭なケースを処理せず、生成された4万件のレポートでは一度も発生しませんでした。私たちは新興企業であり、製品を開発する必要があります。 私は以前にコードレビューをしたことがなく、私が議論しすぎているかどうかはわかりません。私はただ静かになって、彼が言うことをするべきですか?時間を有効に活用することに強く反対しているにもかかわらず、頭を下げて変更を加えることにしました。 私は同僚を尊敬し、彼が知的プログラマーであることを認めています。私はある点で彼に異議を唱えているだけで、コードレビューで不一致を処理する方法がわかりません。 私が選んだ答えは、ジュニア開発者がコードレビューで意見の相違をどのように処理できるかを説明するというこの基準を満たしていると感じています。

20
コードレビューでポジティブなものを見つける方法は?
昨年の深刻な品質問題の後に、私の会社は最近コードレビューを導入しました。コードレビュープロセスは、ガイドラインやチェックリストなしですぐに導入されました。 別の開発者と私は、システムに加えられたすべての変更を、トランクにマージする前に確認することにしました。 また、「テクニカルリード」に選ばれました。つまり、コードの品質には責任がありますが、プロセスの変更を実装したり、開発者を再割り当てしたり、プロジェクトを保留したりする権限はありません。 技術的には、マージを拒否して、開発に戻すことができます。現実には、これはほとんどの場合、上司が期限内に出荷することを要求することで終わります。 私たちのマネージャーは、今後のプロジェクトのスケジュールを作成することに主に関心があるMBAです。彼が試みている間、彼は私たちのソフトウェアがビジネスの観点から何をするのかほとんどわからず、開発者からの説明なしに最も基本的な顧客の要求さえ理解しようと努力しています。 現在、開発はSVNの開発ブランチで行われています。開発者は準備ができたと判断した後、チケットシステムのチケットをマネージャーに再割り当てします。マネージャーはそれを私たちに割り当てます。 コードレビューにより、チーム内でいくつかの緊張が生じています。特に、古いメンバーの一部は、変更に疑問を呈しています(つまり、「常にこのようにしていた」または「メソッドに意味のある名前が必要なのはなぜか、わかりますか?」)。 最初の数週間後、同僚が問題を起こさないように、同僚が物事を滑らせ始めました(バグ報告が顧客によって提出された後、彼女はバグを知っていたが、開発者はそれを指摘することに彼女に腹を立てます)。 一方、私は現在、コミットされたコードの問題を指摘するためのお尻であることで知られています。 私の基準が高すぎるとは思わない。 現時点での私のチェックリストは次のとおりです。 コードがコンパイルされます。 コードが機能する方法は少なくとも1つあります。 コードはほとんどの通常のケースで機能します。 コードはほとんどのエッジケースで動作します。 挿入されたデータが有効でない場合、コードは妥当な例外をスローします。 しかし、私はフィードバックを行う方法の責任を完全に受け入れます。私はすでに、何かを変更する理由を説明するアクション可能なポイントを既に与えています。悪いと思うときは、別の方法で開発していたと指摘します。 私が欠けているのは、「良い」と指摘するものを見つける能力です。悪いニュースを良いニュースに挟もうとするべきだと読みました。 しかし、私は良いものを見つけるのに苦労しています。「今度は、実際にあなたがしたことをすべてコミットした」というのは、すてきで助けになるというよりも、お世辞です。 サンプルコードレビュー こんにちはジョー、 Library \ ACME \ ExtractOrderMailクラスの変更について質問があります。 「TempFilesToDelete」を静的としてマークした理由がわかりませんでしたか?現時点では、「GetMails」への2回目の呼び出しは例外をスローします。これは、ファイルを追加したが、削除した後に削除しないためです。関数は実行ごとに1回だけ呼び出されることを知っていますが、将来的には変更される可能性があります。インスタンス変数にするだけで、複数のオブジェクトを並行して使用できます。 ...(機能しない他のポイント) マイナーポイント: 「GetErrorMailBody」がパラメーターとして例外を受け取るのはなぜですか?私は何か見落としてますか?例外をスローするのではなく、単に例外を渡して「ToString」を呼び出します。何故ですか? SaveAndSendはMethodの適切な名前ではありません。このメソッドは、メールの処理が失敗した場合にエラーメールを送信します。名前を「SendErrorMail」などに変更できますか? 古いコードをコメントするのではなく、完全に削除してください。まだ転覆中です。
184 code-reviews 

19
自分のコードをレビューするにはどうすればよいですか?[閉まっている]
私はプロジェクトのソロに取り組んでおり、独自のコードを維持する必要があります。通常、コードのレビューはコードの作成者ではなく行われるため、レビュー担当者はコードを新鮮な目で見ることができますが、私にはそのような贅沢はありません。自分のコードをより効果的にレビューするためにどのようなプラクティスを採用できますか?

16
コードレビューが非常に難しい場合はどうしますか?
わかりましたので、多くのコードレビューはかなり日常的です。しかし、時折、既存の複雑で脆弱なコードに広く影響を与える変更があります。この状況では、変更の安全性、リグレッションの欠如などを検証するのにかかる時間は過剰です。おそらく、開発自体を行うのにかかった時間を超えることさえあります。 この状況で何をすべきか?マージして何も抜けないことを望みますか?(それを提唱しない!)最善の方法は、明らかな欠陥を見つけることだけが可能です(おそらく、これがコードレビューよりも目的とするべきものでしょうか?) これは、コードレビューの一環としてテストを行う必要があるかどうかという問題ではありません。これは、特に差し迫った締め切り、利用可能な単体テストの包括的なスイートがない、または変更された断片化されたコードに対して実行できない単体テストで、説明されている状況で最良のオプションが何であるかを尋ねる質問です。 編集:私はこれまでの回答/コメントのいくつかが私のフレーズ「広範に影響する」に気づいており、おそらくそれが変更が多数のコード行を含むことを意味すると考えていました。私はこれが解釈であることを理解できますが、それは本当に私の意図ではありませんでした。「大幅な影響」とは、たとえば、コードベースの相互接続性またはノックオン効果の範囲のために、回帰の可能性が高いことを意味します。変更自体が必ずしも大きなものではありません。たとえば、開発者は、多くの低レベルルーチンへの呼び出しをカスケードする既存の高レベルルーチンを呼び出すことにより、1行でバグを修正する方法を見つけるかもしれません。バグ修正が機能したことをテストおよび検証するのは簡単です。すべてのノックオン効果の影響を(コードレビューを介して)手動で検証することは、はるかに困難です。

16
レビュー中に他の人の不適切に設計されたコードの改善を巧妙に提案するにはどうすればよいですか?
私はきれいなコードとコードの職人技を大いに信じていますが、私は現在、これが最優先事項と見なされていない仕事に就いています。機能的でバグがほとんどないのに、ピアのコードが乱雑な設計に埋もれており、将来のメンテナンスにほとんど関心がないという状況に陥ることがあります。 変更が必要なものが非常に多く、期限が近づいていると思われる場合、コードレビューの改善をどのように提案しますか?期限が過ぎた後に改善を提案することは、新機能やバグ修正が追加されると、優先度が完全に解除されることを意味することに注意してください。

8
コードレビューのために送信されたコードが複雑すぎると思われる場合の対処方法
コードを追うのは難しいですが、少なくとも表面的なテストでは、(ほとんど)うまく機能しているようです。あちこちに小さなバグがあるかもしれませんが、それらがより深い問題や単純な修正の徴候であるかどうかをコードを読んで知ることは非常に困難です。ただし、コードレビューを使用して全体的な正確性を手動で確認することは、たとえ可能であっても、非常に困難で時間がかかります。 この状況での最善の行動は何ですか?やり直しを主張しますか?部分的なやり直し?最初にリファクタリングしますか?バグのみを修正し、技術的負債を受け入れますか?それらのオプションのリスク評価を行ってから決定しますか?他に何か?
115 code-reviews 



11
コードレビューでは、レビュー担当者は常に問題の解決策を提示する必要がありますか?[閉まっている]
コードをレビューするとき、私は通常、問題を解決する方法について特定の推奨事項を作成しようとします。しかし、レビューに費やすことができる時間が限られているため、これは必ずしもうまく機能するとは限りません。これらの場合、開発者が自分で解決策を考え出した方が効率的です。 今日、私はいくつかのコードをレビューし、クラスが明らかにうまく設計されていないことを発見しました。特定のオブジェクトにのみ割り当てられ、他のオブジェクトには空白のままになっているオプションの属性がいくつかありました。これを解決する標準的な方法は、クラスを分割して継承を使用することです。しかし、この特定のケースでは、このソリューションは物事を過度に複雑にしているように見えました。私は自分でこのソフトウェアの開発に関わっていなかったため、すべてのモジュールに精通していません。したがって、特定の決定を下すのに十分な知識があるとは感じませんでした。 私が何度も経験した別の典型的なケースは、明らかに意味のない、または誤解を招くような関数、クラス、または変数名を見つけたが、自分で良い名前を思い付くことができないことです。 それで、一般的に、レビュアーとして、「このコードには欠陥があるので...違う方法でやる」と言ってもいいですか、それとも特定の解決策を考え出す必要がありますか?

7
不要だと思われるコードレビューを拒否する方法
私は、自分が存在するとは思わない問題を修正するコードをレビューするように頼まれた立場にいます。 私よりも上級のフィクサーは、彼の修正が必要であると主張しますが、それは私にとってはC ++のso弁にすぎないようです。展開プロセスの一部はコードレビューであり、小規模企業で2番目に高いエンジニアとして、変更をレビューすることが期待されています。 レビュー担当者は元のコーダーと同じようにコードの変更に責任があると思いますが、この変更の責任を受け入れるつもりはありません。このレビューを拒否するにはどうしますか?

21
あなたのコードが混乱していると誰かが言ったら、あなたはどう反応しますか?
私は優れたプログラマーです。私はいつもプログラムが大好きです。そして、私はプログラミングについて多くのことを学び、私をより良いプログラマーにしたいと思っています。私は1年間プログラミングを学び、現在はほぼ2年間プログラマーとして働いています。要するに、私はほぼ3年のプログラミング経験があります。 私たちのチームは5人のプログラマで構成されており、うち4人は新しく、1人は3年以上の経験があります。私たちはもう1年近くプログラムに取り組んでおり、コードをレビューする人は誰もいませんでした。コードのレビューは一度も行ったことがなく、まったく新しいので、きれいなコードがどのようなものかはわかりません。プログラマーは自分で学ぶと思う? 徹底的なテストなしで、プログラムにプログラムを展開しました。現在はタイトであり、コードを変更する前にまず承認とコードレビューが必要です。初めて、誰かが私のコードをレビューし、彼はそれが混乱だと言います。 私はとても悲しくて傷つきます。プログラミングが大好きで、そのようなことを言わせると本当に痛いです。私は本当に自分自身を改善したいです。しかし、私は映画のような天才プログラマーではないようです。もっと良くする方法についてアドバイスをいただけますか?コードを批判する何かを経験したことがありますか?それらのイベントで何をしますか。

20
コードの行数を減らすことはどれほど重要ですか?
私はJ2SE(コアjava)で作業するソフトウェア開発者です。 多くの場合、コードレビュー中に、コードの行数を減らすように求められます。 冗長なコードを削除することではなく、コード内の少ない行で同じことを行うことに焦点を当てたスタイルに従うことです。行の数を増やすことを意味する場合でも、コードを明確にすることを信じています。 物事を行う正しい方法は何だと思いますか? LOC(コード行)が小さい場合、コードにどのような影響がありますか?LOCの数値が大きい場合、コードにどのような影響がありますか? ウェブサイトからの例: "javaranch"- public static void happyBirthday(int age) { if ((age == 16) || (age == 21) || ((age > 21) && (((age % 10) == 0) || ((age % 25) == 0)))) { System.out.println("Super special party, this year!"); } else { System.out.println("One year older. Again."); …

4
コードレビューの目的は何ですか
私はコードレビューの価値で組織を売ろうとしています。私は彼らが雇われたいくつかの場所で働いてきました。私はそれらがスタイル選択の選択と機能的な決定を選択するのに使用されるのを見ました。私の直感では、最も効果的な目的は2つのオプションの間のどこかにあるということです。 それでは、コードレビューの目的は何ですか?

19
コードコミットの前または後に確認します。どちらが良いですか?
従来、コミット前にコードレビューを実行していましたが、今日、同僚とコミット後のコードレビューを希望する議論がありました。 まず、ここに背景があります。 経験豊富な開発者がおり、プログラミングの経験がほとんどない新規採用者もいます。 製品をリリースするために、高速かつ短時間の反復を実行したいと考えています。 すべてのチームメンバーは同じサイトにいます。 私が学んだコミット前のコードレビューの利点: メンターの新入社員 開発サイクルの早い段階でエラー、障害、不良な設計を防止するようにしてください 他の人から学ぶ 誰かが辞めた場合の知識のバックアップ しかし、私はいくつかの悪い経験もしました: 効率が低いため、一部の変更は数日にわたってレビューされる 特に初心者の場合、速度と品質のバランスを取るのが難しい チームメンバーの1人が不信感を抱いた コミット後のレビューについては、これについてはほとんど知りませんが、私が最も心配しているのは、レビューがないためにコントロールを失うリスクです。意見はありますか? 更新: VCSにPerforceを使用しています コーディングとコミットは同じブランチ(トランクまたはバグ修正ブランチ)で行います 効率を改善するために、コードを小さな変更に分割しようとしました。また、ライブダイアログレビューをいくつか試しましたが、全員がルールに従ったわけではありません。ただし、これは別の問題です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.