コードレビューは、ソフトウェア構築のベストプラクティスに関するシリーズのもう一つのトピックです。Codestでは、優れたコードレビューが関係者全員に利益をもたらすという信念が組織全体に浸透しています。なぜこれが重要なのか、そしてコードレビューに対する私たちのアプローチとは?ぜひご覧ください!
著者 自分たちの仕事について異なる視点を得ることで、次のような利点がある。 コード .新しいトリックを学んだり、ある問題を解決する、より最適な方法を発見したりすることも多い。また、他の人たちがコードの正しさをチェックし、すべてが問題ないことに同意していることを知っているため、自信をもって変更セットをデプロイすることができる。
レビュアー 問題解決へのさまざまなアプローチを実際に見ることができる。また、コード読解のスキルも向上させることができる。 プロジェクト .コード・レビューは、作者と同様にレビュアーにとっても学習の機会である。
について チーム ある問題の解決策を検討するには、少なくとも抽象度の高いレベルで問題を理解する必要があるからだ。これは、チーム内で発生する可能性のある偶発的な知識のサイロを取り払うのに役立つ。また、"バスファクター "を高めることにもなる。少なくとも2人(できればそれ以上)がある変更を認識しているため、チームの誰もモジュールの更新方法や、あるバグが発生する理由を知らないという状況が発生する可能性が低くなる。
顧客 迅速かつ確実にデプロイされた変更とソリューションから利益を得ることができます。他のベストプラクティス(優れたテストカバレッジ、CI/CD、ステージング環境など)と共に、コードレビューは、デプロイされたものが安全で、正常で、指定された要件を満たしていることを保証します。
本ガイドラインの意図と使い方
何よりも、これらの提案は、野心的で効率的な問題解決に資する環境を作ると同時に、セーフティ・ネットを作り、チーム・メンバー全員の信頼と透明性を促進することを意図していることを忘れないでください。
チームがこれらのガイドラインを遵守することは強く推奨されるが、堅苦しいルールとして意図されているわけではない。また、このフレームワークは、厳密に従うべき「プロセス」としても意図されていません。なぜなら、厳格なプロセスは速度を低下させ、無駄を助長する傾向があるからです。
チーム内でこのガイドラインをベースにすることは大歓迎です。しかし、開発者がチーム間で入れ替わるとき、どのチームに入ってもコードレビューがこの文書に基づいて行われることを期待されることを忘れないでください。追加のルールがあれば文書化し、非常にうまくいった改善点はこの文書にフィードバックしてください。
コードレビューに関する責任
チームの全員が、コードレビューに関して一定の責任を持っている。以下に、コードレビューの役割別に、コードレビューの注意点を示す。
プロジェクトリーダー
DO リポジトリが適切に設定されていることを確認してください(たとえば、本番環境向けのブランチへのマージは、少なくとも1つの承認レビューがなければ許可されません)。
DO チームがこれらの慣行を理解し、適用することを確実にし、なぜ私たちが特定の方法で物事を行うのかについての理解を促進するために積極的に取り組みます。
DO チームの技術リーダーとして、このような場合に、より適切な解決策を選択し、仕事を前進させる責任がある。
しかしだ、 やめてくれ プロジェクトのリーダーシップを鈍器として使う。 やめてくれ 「ランクを引き上げる」。 DO 誰の作品に対してもそうであるように、自分の解決策に対するレビューや批評を歓迎する。
チームの Slack チャンネルに GitHub を統合することも検討してみましょう。レビュアーの目にレビュー依頼が留まるようにするのに役立つかもしれません。しかし、チャンネル全体のボリュームによっては、これがあなたのチームに適しているかどうかわかりません。
チームメンバー
コードレビューに参加すること。コードレビューをしないことは許されません。
チームメイトは、あなた次第で仕事が進む!
ある審査がどうしてもできない場合、 DO それを明確かつオープンに伝える。
しかしだ、 やめてくれ そのモジュール/システム/ビジネスロジックの仕様を知らないから、あるレビューができないと決めつける。コードレビューは重要な学習の機会です。
何かについて十分な知識がないと感じたら、レビューをする、 DO 作者に尋ねれば、その変更について喜んで説明してくれるだろう。
やめてくれ 経験レベルに応じてレビューを拒否する(あなたの場合 または 筆者のもの)。
DO 少なくとも、作成したPRと同数のレビューを行うようにしてください。理想的には、必要なレビュー数に対するレビュー数の比率を1以上に保つことです(特に大規模チームでは)。
著者
DO 自分のコードをレビューしてもらうのは自分の責任であることを理解すること。チームはレビューするプル・リクエストを積極的に探しているかもしれないが、その必要はない。
やめてくれ 常に同じチームメンバーにレビューを割り当てる/依頼する - 多様なレビュアーがいるほうが、より多くの恩恵を受けられる(逆に、より幅広い開発者があなたのコードをレビューすることで恩恵を受けられる)。
やめてくれ 経験に基づいて誰かをレビューから除外する。ジュニア開発者はコードをレビューすることで利益を得る。シニア開発者は、コードをレビューすることで利益を得る。この文書の序文にあるように みんな コードを見直すことで得られるメリット
検討する レビュアーの選択にはランダマイザーを使います。例えばRubyでは %w[チームメイト1 チームメイト2 チームメイト3].sample
は不思議な働きをする。
DO どうしても不可能な場合を除き、プルリクエストには少なくとも2人のレビュアーを割り当てましょう。そうすることで、より多くの人がプロセスから利益を得ることができます(3人いれば、同数になることは難しくなります)。
DO プルリクエストのレスポンスに気をつけましょう。どのようなコメントに対しても、今この瞬間に返答するというフローを崩すべきではありませんが、返答がタイムリーであることを確認してください-そうでなければ、あなたのPRはコードレビューでいつまでも長引きます。
DO オープンな態度で臨むこと。査読者は善意で助けようとしてくれているのだと常に思いましょう。自分の論理を説明し、査読者の反論に対処し、質問に答えましょう。
DO 礼儀正しくあること。誤解は起こるものだが、それが暴走してチームの雰囲気を悪くする必要はない。
DO 正直であれ。これが最善の解決策だと思うなら、そう言い、論拠を示す。レビュアーの提案が、あなたが作成したものよりも優れていると確信した場合は、それを伝えましょう。あなたのアイデアとレビュアーのアイデアの両方を使った「両者にとって最善の」解決策ができると思うなら、それをレビュアーに提案してください。最終的には、プルリクエストのコンセンサスを目指しましょう。
DO 彼らのコメントを解決するのはレビュアーに任せてください。
DO レビュアーには、自分の課題、理由、その他の要件を積極的に説明すること。知らないのは構わないが、知識を隠しておくのは許されない。
やめてくれ 私たちは皆、素晴らしいスペシャリストですが、ある種の謙虚さを持って仕事をすることが重要です。
DO あなたのコードの最初のレビュアーになってください。レビュアーの帽子をかぶり、嫌いな人にするようにコードを注意深くスキャンする。空行、残り物、欠落している仕様など、最も明白なものを特定し、排除する。何も読み飛ばさないでください-どうせ指摘される可能性が高いのですから。レビュアーの時間を無駄にしないこと!
DO プルリクエストを徹底的に説明してください。レビュアーがコードを読んでいて何も驚かないのであれば、説明は良いことです。レビュアーはあなたの心を読むことができないことを忘れないでください。だからこそ、明らかでないこと、重要な決定とその理由、新しいクラスやファイルについて説明することが重要なのです。
検討する をプルリクエストテンプレートを使って追加してください。Githubを使用している場合は、以下のリポジトリに追加してください。 .github/pull_request_template.md
.チームメンバー全員が自分のプルリクエストについて説明することを促します。また、説明フィールドにテンプレートを入力することで、より簡単に書くことができます。私たちのプロジェクトで使っているテンプレートはこちらです。 https://gist.github.com/weemanjz/a20ccb9f3f492b9bd21ab026a1d46353
著者
DO を持つことはあなたの責任であることを理解してほしい。 コードレビュー - あなたのチームは、レビューするプルリクエストを積極的に探しているかもしれないが、その必要はない。
やめてくれ 常に同じ人にレビューを依頼する コード・レビュアー - 多様なレビュアーから、より多くの恩恵を受けることができる(逆に、あなたのコードをレビューすることで、より幅広い開発者から恩恵を受けることができる)。
やめてくれ 経験に基づいて誰かをレビューから除外する。ジュニア・デベロッパーは コード・レビュー .シニアデベロッパーは、次のようなメリットがある。 コード・レビュー .この文書の序文にある通りである、 みんな パフォーマンスによる利益 コード・レビュー .
レビュアー
DO 要求の代わりに提案の言葉を使う。こう言う代わりに 「あなたは コード品質の向上 代わりにXをすることによって" と言う。 「改善することを検討したことはあるか コード品質 Xをすることによって?"
DO あなたの提案を説明してください。 「Xの方がいいと思う。 知識移転 そして コード品質の向上 ."
たとえあなたの提案が客観的な情報源から出たものであったとしても(例. コードスタイル ガイドライン)、 DO 作者に何かを指示するのではなく、作者に何かを依頼する。 「すべてのウィジェットは、私たちの定めるところに従ってフロブナイズしてください。 コードスタイル ガイド - [リンク]"
やめてくれ あなたは何でも知っていると思い込んでいる。 「私の理解では、このウィジェットは決して発泡すべきではなく、この条件下では発泡する。 コードレビュー ?"
DO 包括的な言葉を使う。 "このように建設した方が、将来的に有利になると思います。これについてはどう思いますか? より良いコードレビュー という提案? そして 「代わりにXを使うべきだろう。 効果的なコードレビュー ?"
DO を迅速に行う。 コード・レビュー .しかし、できる限りループをタイトに保つようにする。ウォームアップ」または「クールダウン」として、平日の最初か最後に行うのが好きな人もいる。
これらのキーワードは、文章の文脈や一貫性を損なわないように挿入されていることにご留意ください。特定の場所に挿入してほしい場合は、その旨を明記してください。