コードレビューをやる意味
コードレビューをやる意味には、以下のようなメリットがあります。
品質向上
- クラス設計などが適切か
- 可読性、保守性は担保されているか
属人化の防止
- 他の人が理解できるコードであるか
- ソースコードはドキュメントでもあるという考え方がある
スキル向上
- 開発者の実装レベル向上させる
- 相互レビューなどをすることによりお互いの知らない知識を共有しあえる。また相乗効果なども期待できる
バグの早期発見
- チーム全体でコードを検証することで、バグや潜在的な問題を早期に発見できる
コードレビューの形式
チャット または コメント形式
メリット
チャットやコメント形式のコードレビューは、テキストチャットやGithubのレビュー機能などを使用し、レビュー実施者が自分のペースでコメントを残し、コードの品質向上を図ります。
レビュー内容がテキストで残るため、後で見返したり他の人の指摘などを確認出来たりとメリットがあります。
デメリット
一方で、後で説明する対面形式と比べると、レビュー実施者の時間を使ってしまう事や、レビュー依頼者が分からないことが出てくると、対面と比べ質問しづらいというデメリットもあります。
対面形式
メリット
対面形式のコードレビューは、メンバーが同じ場所に集まり、リアルタイムでコードを確認し合う形式です。
直接的なコミュニケーションや即時のフィードバックが出来るメリットがあります。
デメリット
こちらも一方で、指摘内容を聞き逃してしまったり、レビュー実施者本人も何を指摘したか忘れてしまう というデメリットがあります。
コードレビューを受ける前に確認すること
コードレビューを受ける前に、以下のポイントを確認しておくことが重要です。
聞かれた際に意図が答えられないコードは書かない
自分で書いたコードには、責任を持つことが大切です。
どういう意図で書いたか聞かれた際に、理由を明確に答えられるようにしておきましょう。
「参考にした箇所がこうだったから」「検索したらこう書いてあった」などは理由になりません。
最低限、コーディング規約レベルの確認は済ましておく
チームのコーディング規約やベストプラクティスに基づいているか確認します。
初回なら仕方ないですが、2回目以降は一度指摘された内容は再度やらないように確認を徹底します。
レビュー実施者も、コーディング規約レベルのミスを幾つも見つけると気持ちがげんなりしてしまいます。
レビューは質問の場ではない
レビューは分からないことを質問する場ではありません。
実装方法や相談事項など、不完全な部分があるならば、先に別で確認しておきましょう。
レビューする側は、大体忙しい事が多いです。相手の時間を使っているということを意識しましょう。
レビューの意味/目的をきちんと理解した上でコーディングする
レビューの目的や意図を理解し、それに合わせてコーディングしているか確認します。
動けば良いという考えは、プロジェクトが本当に追いつめられている時以外はダメです。
あなたが楽をした分、レビュー実施者の負担が増えてしまいます。
コードレビューを受けている最中に意識すること
コードレビューを受ける際には、以下のポイントを意識しましょう。
謙虚な態度で挑む
レビュー実施者の提案やコメントに対して、謙虚な態度で挑みましょう。
相手も人間なので、同じミスが多かったりするとストレスが溜まります。
あまりにも理不尽な場合は、大体パワハラなので、言い返すか他の人に相談しましょう。
正直に答える
レビュー中に、どういう意図でそのコードを実装したか、忘れてしまうことがあると思います。
思い出せずに、その場で新しい理由などを考えると、大抵支離滅裂な言葉になってしいまいます。
忘れた時は、正直に忘れました と言った方がまだ良いです。
同じミスを繰り返さないようにする
指摘に対して理解を深め、同じミスを繰り返さないことが大切です。
修正する際も、なんとなく直すのではなく、自分の知識として吸収する様に心がけましょう。
レビューは対話
不明点や疑問点があれば、極力レビューの時間内に確認しましょう。
それが指摘された時かレビューの最後の時間かは、レビュー実施者によります。
私は指摘した時に確認すると、お互い内容がしっかり頭に残ってるので良いと思います。
さいごに
コードレビューは、間違いなどを指摘することがある特性上、怒られていると感じてしまうこともあります。
ですが、多くの場合において、あなたを否定するために言っているのではないと思います。
レビューする側も、ちょっと言い過ぎたかな、、と思う時もあります。
もし傷ついたりムカついたりした際は、それを糧にして、相手にこういう書き方もあるんだ と教えてあげられるくらいになりましょう。
以上になります。
レビューする側に向けて書いた記事もあるので、良かったら確認してみてください。
また、コードレビューそのものについてまとめた記事もあるので、合わせてお時間がある時にでもどうぞ。