InfoQ

News

デザインやコードの良いレビュー、悪いレビュー、そして酷いレビュー

作者 Vikas Hazrati, 翻訳者 八角研究所 投稿日 2008年3月24日 午前12時16分

コミュニティ
Agile
トピック
Delivering Quality
タグ
補完実践

デザインとコードレビューに関する興味深い記事(source)でKirk Knoernschild氏(source)は、レビューを行うということは、ソフトウェアの品質を改善することを約束し、基準の順守を保証し、そして価値ある開発者の教育ツールとなると述べている。しかしながら、レビューの実施方法にその効果は左右される。レビューは、ある組織ではソフトウェア開発工程で本当に意味のあるものであるかもしれないが、その一方で別の組織では形式的なお役所仕事の一部となってしまっているかも知れない。

彼は最も酷いレビューのいくつかの例を次のように挙げている。

コーディングを行った開発者を脅したり攻撃したりする魔女狩りレビュー

深刻な問題は放っておいて、記述方法やインデントについて注力する中括弧論争レビュー

レビュアーが事前にコードを見ることがなく、また事前準備もない状態でレビューに臨む盲目レビュー

コードの一部のみをレビュー対象とし大事な箇所が対象として除外されてしまう除外レビュー

レビューを行うことが不可能である、またレビューをしたとしても効果のないくらいコードベースが大きくなってから行う紙の無駄使いレビュー

プロジェクト管理上こなさなければならない形式的に実施するトークンレビュー

大多数がプロジェクトに関係なく開発者を威嚇するために存在するような多人数で実施するワールドレビュー

Kirk 氏は効果的なレビューを行うために次のように考えている。チームはできるだけレビュープロセスの自動化に取り組みメトリクスを集めるべきである。また、チームは開発者がコードチェックの準備をする前に間違いに気が付くことができるように、開発環境にレビュー結果をフィードバックするメカニズムを組み込むことに取り組むべきである。

彼は客観性と明確なレビュー観点をレビュープロセスにもたらすための助けとなるいくつかのツールを紹介している。

Kirk氏はさらに20%レビューという名の興味深いレビュー実践方法について言及している。

20% レビューは、開発の20%が完了した時点で一度レビューを行うべきである、という非常にシンプルな考え方に基づくレビュー手法である。いくつかのチームはイテレーションごとに20%レビューを実施することでその有効性に気が付くかも知れない。それは確かに効果的であるが、チームが継続的なレビューのためのメトリクスを使用して良い仕事をしていた場合、システムの主要機能ごとに20%レビューを行うことで十分であると私は思う。

20%レビューは初期のデザインやコードをクリーンにすることに集中すべきだ。コードの量が比較的管理できる間は、メトリクスはコードの進化と成長を促進させる。

レビューを行う助けとなるメトリクスを用いることはレビュープロセスに客観性と明確なレビュー観点をもたらすということを、彼は強調している。優れており、自動化されていて、且つ簡易なメトリクスを用いることは有効なレビューをすることにつながる。レビューはまた、開発者がレビューで得た知識を早期に活用できるように、そしてレビューの有効性を低くしないためにも、十分早期に行うべきである。

原文はこちらです:http://www.infoq.com/news/2008/03/code-review-antipatterns

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

.NET Webサービス向けのサービスレジストリの実装

本稿では、SOAソリューションの実装を単純化するために利用できるサービスレジストリの.NET実装を説明します。

John Lamが語るIronRubyの現状

InfoQは、独創的なRubyCLRの開発者であり、IronRubyを世に出すためにマイクロソフトが雇い入れたJohn Lam氏と話す機会を得た。Johnの正式な肩書きはDynamic Language Runtimeチームのプログラムマネジャーである。

人に愛されるリモートミーティングの手引き

テレカンファレンスとデスクトップを共有するツールを使いこなすことは、現在のビジネスにおいて重要なスキルになっています。本稿は、これらの情報と裏技を提供します。

Lean開発者のスタート: チームのスタートアップ時間の削減

アジャイルプラクティスは新チームメーンバーが知りたい情報を直接提供するものではありません。そこで私は、新しいチームメンバーの「セットアップ時間」の削減するために、新しいプラクティスを提案します。

複数のアジャイルチームでのバージョン管理

このレポートでは複数のチームが動いているアジャイル環境において、どのようにバージョン管理を行えばいいかを説明します。このスキームは"Scrum and XP from the Trenches(InfoQのミニブック)に出てきた企業で私たちが新しく採用した方法です。

ErlangとYawsを使ったRESTfulサービス

本稿では、Steve Vinoski氏が、プログラミング言語ErlangとWebサーバーYawsを使用したRESTful Webサービスを構築する方法を説明します。

Google Gearsの現状、そして未来を占う

この記事では、現在Gearsが提供している機能を学び直すとともに、Gearsが将来備える可能性のある機能を紹介することで、Gearsが目指すものを明らかにしていきたいと思います。そして最後に筆者の私見も交えつつ、Web技術の将来像について少し想像を巡らせたいと思います。

高い生産性を生み出すソフトウェア開発の秘伝

何について学ぶのか?お互いのこと、テクノロジ、ドメイン、顧客など、すべてについてである。速く学習するチームは成功する。チームのパフォーマンスを妨げる目に見えない「学習ボトルネック」について詳しく知りたいのなら続けて読んでほしい。