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

返信

ジャンル別一覧

Service Firewallパターン

今回のパターンの例は、Arnon Rotem-Gal-Oz氏が現在作成中している本からのものです。Arnon氏は、メッセージの送受信をしたり、専用のソフトウェアコンポーネントやハードウェアでそれらを検査するために、サービスファイヤーウォールをどのように利用するのかについて説明しています。

Javaにおける言語内ドメイン特化言語へのアプローチ

Alex Ruiz氏とJeff Bay氏が、Java言語を使ってドメイン特化言語を書くことがどうして可能かを説明し、構成方法のパターンも提案します。

3つのM - リーンの3要素

リーン主義をソフトウェア開発に適用することについての議論では、主にムダ(無駄:Muda)なものを特定して排除することに関心が向けられてきました。リーン思考は同様に、ムリ(無理:Muri)とムラ(ばらつき:Mura)を削除することも目指しています。

Acegi SecurityでセキュアなGrailsアプリケーションを作る

本稿では、Grailsのサンプルアプリケーションを通じてgrails-acegiプラグインの統合について説明します。この統合には、Groovy、Grails、Acegi Securityの3つの主要コンポーネントがあります。

XMLをユニットテストする

XMLUnitはBSDライセンスの下で認可されたオープンソースプロジェクトです。XMLUnitは相関クラスの小さなライブラリを提供しますが、それは、前のセクションで概説された幾つかのXMLをテストする異なった方法のそれぞれを簡素化します。

タグからリッチへ: Web 1.0からFlexへ

この記事では、James Ward氏とShashank Tiwari氏が、Web1.0的なインターフェースをTo Rich Internet Applications (RIA)を使ったインターフェースに移行する方法を、サンプルを交えながら説明しています。

NetBeans: Ruby開発者の新しい親友(Part2)

連載第二回目では、エディタの中または外で、開発者の生産性をあげるのに役立つRuby on Railsのツールとさまざまな追加機能に焦点を当てたいと思います。

GWTでAjaxのパフォーマンスを向上させる

今回Ryan Dewsbury著"Google Web Toolkit"から"Integrating with a GWT-RPC Servlet"の1節をサンプルとしてお届けします。