うまく機能していても、シニアや上司と一緒にプログラムを見直すのは良いことですか?


18

私の会社では、プロジェクトを実施する前に、上司は先輩に私や他のチームメンバーによって書かれたプログラムをレビューするように依頼します。

知識を得るには良い方法だと思いますが、プログラムがうまく機能していると、レビュー後も同じように機能しない場合があり、プログラムをもう一度調べる必要があります。

彼らは、レビューがプログラムとクエリの実行を最適化するのに役立つと言いますが、プログラムの実際の機能よりも最適化を好むことができますか?


6
独自のテストを行うときに慣れている特異性を知らない人によるレビューなしで正常に動作していることをどのように確認できますか
ラチェットフリーク14年

テストチームによるモジュールの完全なテスト後にコードを確認するためです。
ヒマンシュ14年

15
@Himanshu:テスト後のレビューは間違いなく遅すぎます。進行中の作業についてレビューを行う必要があります。
ジャン・ヒューデック

3
この慣行を受け入れます。私は自分のチームでこれをやっていることを切に願っています。知識のサイロ(私たちにとって大きな問題)を排除し、チームメイトがコードを操作できるようにします。レビューでコードが時々書き換えられることを意味する場合、それは良いことです。優秀なプログラマーでさえ悪いコードを書くことがあります。私たちの中には、戻って掃除するのにもっと時間が欲しい人もいます。これは、あなたよりも経験のある人々と素晴らしい学習体験をするチャンスです。人々があなたのコードを攻撃していると考えないでください。あなたをより経験豊かなプログラマーに育てようとする人々と考えてください。
jpmc26 14年

1
チームメンバーが多くの勢いが失われていると感じる程度まで、「正常に動作している」コードがコードレビュー中にバラバラになるのが一般的である場合は、おそらくペアプログラミングを検討する必要があります。書かれた。
Buhb 14年

回答:


38

「きちんと働く」ことは確かに素晴らしい指標ですが、あなたが書いたものを解読し、それを維持できるチーム内の唯一の人であれば、コードは中長期的に会社にとってほとんど価値がありません。

良いコードは少なくとも:

  • 意図したとおりに動作する
  • 人間が読める/クリア
  • 簡単にメンテナンス可能
  • 将来の変更に簡単に拡張可能
  • 安全
  • 不要な依存関係なし
  • ノミナルでないケースを正しく処理する

(これらの要件の一部は実際には重複していますが、個別に検討するのに適しています...)

コードレビューは、自動テストを通じて実行できる「作業」部分を超えた目的に役立ちます。

私は、これが何かが引き裂かれて、それを一から作り直さなければならないことを悩ませていることを個人的に知っています。しかし、多くの場合、これはシニア/技術リーダーからの誤解によるものです。したがって、頻繁に書き換える必要があると思われる場合は、次回、1行を書く前に校閲者にアクセスして、彼が期待していることについて可能な限り多くの情報を取得してください。また、コードレビューアのチームが、すべての開発者が参照できる正式なドキュメントに期待を要約することもできます。

より良い面では、セッションは素晴らしいプラクティス/デザインを共有する機会でもあります。


1
コードのテストはバグがないことを意味するものではなく、たとえばソフトウェアがクラッシュするケースを制限することを付け加えます。
dyesdyes 14年

3
同意します。また、自動テストもコードをレビューして、正しいことをテストしていることを確認する必要があります。
ザビエルT. 14年

12

私はあなたの質問を「機能しているコードがレビューでそれがコンパイルされないところまで屠殺できるか?」と解釈しました。

はい、できます。通常、レビュー中に、コードがどのように機能するかを確認します。コードを渡したいときは、プログラムの特定の部分を終了したと言います。

あなたはそれが機能すると言います。次に、これを検証するためのテストが行​​われます。テストに合格したモジュールは、そのモジュールに再度触れてはならないという意味ではありません。

機能しているように見えるモジュールは、実行時、またはあなたや他の誰かがそれを保守しなければならないときに数ヶ月のうちに、発生するのを待っている災害になる可能性があります。レビューでコードを変更し、何が間違っていたのかを指摘することで、レビュー担当者は(できれば)実際に何かを教えようとしています。


3

ピアレビューは間違いなく素晴らしい学習方法です。誰かが何か違うものを見るかもしれません。彼らはあなたにとって異なる経験をしており、改善に貢献できるはずです。これは軽parすべきではありません。開発者は誰のコードにもコメントして建設的に批判できると期待しています!

これらの「改善」のいくつかが実際に破壊的な変更を行っているように思えますが、それは(ご想像のとおり)レビューを行う開発者が作成者よりもソフトウェアの経験が少ないためです。

この傾向は自己フィードバックであり、おそらくあなたのコードを追跡したり維持したりするのは難しいでしょうか?あなたのレビューは貴重ですか?絶対に!あなたの同僚が壊れているように見える作業コードを持っていることは、どのようにイライラするかを見ることができます。

問題は、プログラムの機能を保護する方法になり、レビューを完了した後も機能が機能していることがわかります。私の提案は、あなたがまともなユニットテストをカバーすることを確実にすることです。そうすれば、あなた/あなたのレビュアー/あなたの後継者がコードを変更するときはいつでも、彼らが行った変更は安全であると確信することができます。

ETA:あなたのコメントの1つを見つけました。これは言うまでもありませんが、テストチームが手に入れる前にコードレビューを行う必要があります。そうでなければ、彼らは最終製品をテストしていません。


1
統合テストは、破損の検出にも非常に役立ちます。
jpmc26 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.