個人的なコードレビューについてのひとりごと

2012/12/28

自分はプログラマとして雇用契約を結んだことがない、サーバエンジニアであります。 しかしながら外注ベンダさんの作成したプログラムが仕様変更のため利用できなくなり、 仕様変更にはお金がかかるということで修正をする機会を得た。

  • 仕様変更に伴うDBの更新スクリプト
  • 関連するPL/SQLの変更
  • 結果出力の通知メールスクリプト
が主な改修範囲。

テスト重要ということで検証環境でのテスト作業もあわせて行っているところ。 さて掲題のコードレビューについてなのだが、職業プログラマ的存在が不在に等しく、 元コードとの差異を示したところでその違いを理解してもらえるのか非常に不安に思っている。 システムに対しての安全性をみんなで共有できるようなコードレビューを行うにはどうしたらよいか。

  • 改修理由の説明
  • 改修内容の説明(つまりコードレビュー)
  • テストとその結果の提示
があれば改修を任せた方も、任された自分も安心できるかな。 「つっこみどころを事前に予測して、そこを詰めておきたい」というのがある。 職業プログラマでないにせよ、 コードを書けないわけがないしやりゃできると思っているからやっているわけで、 それならきちんとしたものを書いて残しておきたい。 「職業プログラマ」に負けないようやりたい。

コードレビューなんだけど、 コードレビュアーがどの程度までそのコードを理解してくれ(てい)るのかというのは気になる。 だって理解できる人ばかりならたぶんその人達が書くほうが速いのだろうし、 適材適所という意味ではそうするべきだろう。 でも現実は「自分が書くしかない」という状況だったわけで、 その中で行うコードレビューというのは形骸化しそうな気もして怖い。

「ここではforeachで要素数分ぶん回してます」

とたとえ語ったとしても、

  • foreach の中にどのような要素が入ることを期待したロジックなのか
  • そもそもそのロジックは正しいのか
ということをレビュアーが理解していないと意味が無い。 つまり僕はレビュアーに対してコードを理解させるべきなのだ。 (今僕に置かれている状況にとっての)コードレビューとは、 「自身のコードを説明しロジックを共有すること」なのだ。 そしてもっと言えば、このコードレビューとは仕様を再確認するべき場所なのかも知れない。