Code Review Best Practices 日本語翻訳

本ポストは以下の記事の日本語訳です。ご本人に、翻訳、掲載の許可をいただいています。
Code Review Best Practices - Kevin London's blog

本記事は、以下の GitHub リポジトリの gh-pages として存在しています。
https://github.com/pankona/CodeReviewBestPractices_JP_Translation

日本語訳がおかしいところや、こうしたほうが分かりやすい、等、
指摘や提案があれば ISSUE か Pull Request か、その他なんでもいいので教えてくれるととても嬉しいです。
以下、翻訳部分スタート。


Wiredrive社において, 私達はたくさんのをコードレビューしてきた。私にとっていままでそういう経験がなかったものだから、なかなか新鮮な思いである。
私がコードレビューを通して気づいたこと、良いと思っているやり方についてここで整理してみようと思う。

端的に言えば、コードレビューとは2人以上の開発者がある問題解決のために修正に対して議論することである。
たくさんの記事がコードレビューのメリット (知識の共有、コードの品質の向上、開発者のスキル向上、等) に言及している。
しかし、レビューの具体的なやり方について触れている記事はあまり存在しないと感じている。
本記事では、コードレビューにおいて何に着目するか、どのように議論するべきか、について書いていく。

コードレビューの観点

アーキテクチャ / 設計編

スタイル編

テスト編

自分のコードはまず自分が最初にレビューしよう

自分が変更したコードについては、変更したファイルやディレクトリに対して git add した後、 git diff --staged で、
変更内容をコミットする前にチェックするようにしている。
そのときに注意しているのは、

レビューに出す前に、まずセルフコードレビューがパスできるか確かめるるようにしたい。
他の人に指摘されるより自分に指摘されるほうが気持ちも楽だしね。:p

コードレビューを進めるにあたって

上述したようなコードレビューに関するよしなしごとと同様に、「レビューする人」の扱いについても多くの課題・改善の余地があることに気づいた。
より良い方法をいまだに模索中であるが、以下に実際にうまくいったやり方をいくつか紹介する。

マインドセット

開発者は、動作するのはもちろんのこと、加えてメンテナンスしやすいコードを書く責任がある。
ただ、納期におされてメンテナンス性がおざなりになることがしばしばある。

リファクタリングは外部的な振る舞いや機能を変えない、内部的な変更である。
一見すると地味でつまらなく思うかもしれないが、その価値を低く感じる必要はまったくない。
リファクタリングによるメンテナンス性の向上は、バグ修正と同じくらい重要であると心得よ。

ややもすればレビュー指摘は個人攻撃のように思えてしまい、レビューに対して臆病な気持ちになることもある。
しかし、コードレビューはあくまでコードレビュー。なるべくオープンな気持ちを持ち、指摘は真摯に受け止めよう。

レビュアーの指摘に対して、特に反論がないとき、指摘通りに修正してよいだろう。

レビュアーが変更について質問をしてきたとして、仮に説明できないとすると、
それは理屈のない、なんとなく書いたコードということを意味しており、つまり、将来混乱をまねく部分になるかもしれない。

また、コードへの変更は、大きな設計上の欠陥やバグを発見するキッカケになる可能性もある。

コードレビュー指摘への対応

通常、指摘は行単位につけられている。
レビューには Stash を使っているが、私はレビュー指摘を見つけると同時に、修正コードをコミットするようにしている。
そうしないと、どの件に対応してようとしていたか、忘れてしまうことがあるので。

参考文献

キレイなコードを書く技術に関する書籍はたくさん存在する。
いくつか紹介する。

良さ気な動画もある。


このエントリーをはてなブックマークに追加 Tweet
Copyright © 2015 pankona