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+,
slashdot+
Hatena

特集コンテンツ一覧

Flex 4の新機能トップ10

今週(2009年6月1日)AdobeはFlex 4の正式な初ベータ版をリリースしました。Flex 4はGumbo(オクラ)というコードネームで開発されています。今回のリリースには大きな変更が多数含まれています。このRIAフレームワークの最新バージョンにおいて変更された事柄についての概要を以下のリストで見ていきましょう。

Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

ビジネス領域の深い理解を反映したドメインモデルを設計するための、ヴィジョンとアプローチです。この本は、Eric Evans氏の「Domain Driven Design」の主要点を短く読みやすく要約しました。

JavaプログラマがFlexとBlazeDSを学んだ方がいい13の理由

この記事ではJavaプログラマがなぜFlexとBlazeDSを学ぶべきなのかについて13の理由を述べています。なぜ高度にインタラクティブなWeb サイトからJavaで開発されたバックエンドをもつエンタープライズ・アプリケーションまでを含む、リッチ・インターネット・アプリケーション(RIA)の開発にFlexとBlazeDSの組み合わせが最適な選択肢となるのかについて述べています。

仮想パネル: バックログは重要な成果物とプラクティスか、それとも無駄か?

Mary Poppendieck氏、Ron Jeffries氏、Jeff Patton氏、David West氏、Steve Freeman氏、Jason Yip氏が、バックログに関する彼らの意見とアジャイルチームを成功させるために必要な事を語った。

Perf4Jを使ったパフォーマンス解析とモニタリング

この記事ではAlex Devine氏が、Java開発者がPerf4Jをどのように利用できるかと、タイミングステートメントにコードを追加し、ロギング、結果の解析とモニタリングを行うオープンソースツールセットの説明をします。

複雑な外部DSLを開発する

本稿では、Vaughn Vernon氏が内部DSLと外部DSLの違いを説明し、複雑な外部DSLを開発する際のステップを示します。

J2EEアプリケーションにおけるAOPを使ったフェッチ戦略の実装

この記事では低レベルのサービス・レイヤやリポジトリ・レイヤを肥大化させることなく、フェッチング・ストラテジによってモジュール化された方法でバックエンドにあるシステムからデータを取得する処理を最適化する方法について説明します。

実証済みのアイデアの融合: S#arp Architectureの裏側

この記事では、Web開発における多数の成熟傾向と、クライアントに価値を提供することに対するそれらのメリット、およびS#arp Architecture(最善の手法と技術を活用しようとするASP.NET MVCをベースとしたフレームワーク)内でのそれらの使用について取り上げます。