InfoQ

News

オピニオン: リファクタリングは必要な無駄

作者 Amr Elssamadisy, 翻訳者 白石 俊平 投稿日 2008年1月11日 午前6時39分

コミュニティ
Agile
トピック
設計
タグ
Refactoring,
Lean

リファクタリング(サイト・英語)は、アジャイル開発者のツールキットにおいて、キーとなる技術的なプラクティスの一つだ。リファクタリングはまた、顧客にとっての価値としては目立ったものではない。それはまさしく、リファクタリングの定義自体によるものだ - 振舞いを変えずに、構造 (設計) の変更を行う、と言うものだ。リーン・ソフトウェア開発の世界では、顧客にとっての価値を持たないものは全て無駄であり、そして、顧客は振舞い/機能だけを知覚する。構造ではない。

しかし、リーンにおいては二つのタイプの無駄が存在する: 純粋な無駄と、必要な無駄だ。純粋な無駄は、チームでのソフトウェア構築にとっても、顧客によるソフトウェア利用にとっても価値を持たないもののことを言う。一方必要な無駄とは、それが顧客にとっての価値を持たないとしても、現在われわれが知っている仕事のやり方として最良の方法のことである。リファクタリングは明らかに後者である。

それでは、どちらにせよ価値があるのであれば、なぜそれを「必要な無駄」と呼ぶのだろうか?そう、それは「顧客にとっては価値がない」と言うのがポイントだ。従って我々はそれを最小限に抑えるべきだし、常に「行わないに越したことがない」ことであると見なされる。しかし、もしそれを無駄だと認識しないのであれば、もはやそれを「無駄だ」と認識するすべはない。なぜなら、われわれのリファクタリングに対する認識は、物事を正しく行うための唯一の方法であるからだ。(巨大な設計を一番最初に行う、と言うのを考えてみてほしい)

ここまでのところがお分かりなら、論理的に次の質問は"それがどうした?これが物事をどうやって変えるというんだ?"というものだ。リファクタリングを必要な無駄とみなすことで、開発者はリファクタリングを最小限にするようになるだろう; ユーザの要求を満たすことができないコードのみ、リファクタリングを行うのだ。これが意味するところは、もしあなたがコーディング中に、"不吉な匂い"のするメソッドをクラス内に見つけたとしても、それがあなたが作業中の要件に直接結びつかないのであれば、あなたはそれを放っておくのである。

原文はこちらです:http://www.infoq.com/news/2007/12/refactoring-is-waste

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

No comments

返信

ジャンル別一覧

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。

Google Chartとgchartrbの紹介

Google Chartは、チャートを作成するためのWebサービスです。本稿では、Google Chartのインターフェースと、Rubyコードから簡単にチャートを生成することができるgchartrbライブラリの説明をします。

SOAを超えて: 動的な業務アプリケーションのための新しいエンタープライズアーキテクチャフレームワーク

全二回からなるこの記事では、ダイナミックビジネスアプリケーション(Dynamic Business Applications:DBAs)の開発についての全体的な眺望を、アーキテクチャと方法論の観点から見ていくことになります。我々のゴールは、「ビジネスの変化や、その他に必要とされる変更に対して、いかにして容易に適応できるアプリケーションを構築していくか」を導きだすことです。

ESB接続形態のオルタナティブ

本稿では、Adrien Louis氏がESBベースのSOAに対する2つの接続形態についての賛否について説明しています。その2つとは、会社での単一のESB対「部門毎」に相互接続するESBによるシステムです。

AjaxプログラマのためのJavaOne2008 -GrizzlyでComet!-

誕生から2年を経てCometは「何が出来るのか」という議論から、「いかに実現するか」という議論に関心が移ってきたように見えます。そこで本稿では同じくJavaOneで数多く取り上げられたNetBeans 6.1とGlassFish v3を使いながら、サンプルを交えてCometを解説していく事にします。

SharePoint Webサービスを始めましょう

この記事では、WSS3とMOSS 2007に難しい設定など一切せず、すぐに利用可能なWebサービスと、Javaと.NETからそのWebサービスを消費する方法に目を向けます。

レトロスペクティブのプライムディレクティブに対する問い

この記事の始まりは、知的で思慮深い人たちの魅力的なグループが食事会を終えて話をしているところです。話はレトロスペクティブ(振り返り)プロセスの要であるプライムディレクティブ(最初の指示)に及んでいます。