![]() |
特集Visual Studio 2005
|
|
|
リファクタリングとは何か?
Visual Studio 2005(以下、VS 2005)には、待望の「リファクタリング支援機能」が搭載されている。リファクタリングとは、ソフトウェアの生産性を改善する優れた手法の1つである。それを支援する機能が開発環境に標準で搭載されたことは、非常に好ましい進歩といえるだろう。そして、それを正しく用いることで、より短い時間で、より優れたソフトウェアを生み出せるようになったといっても過言ではないだろう。
では、リファクタリングとはいったい何だろうか?
リファクタリングとは、一部のオブジェクト指向開発者が行っていたテクニックを、マーチン・ファウラー氏が『リファクタリング:プログラミングの体質改善テクニック』(ピアソン・エデュケーション刊)という書籍にまとめたものである。
この書籍はJava言語によってサンプル・コードが示されているが、リファクタリングは特定のプログラム言語に依存したテクニックではない。事実として、この書籍の冒頭では、リファクタリングがSmalltalkプログラマーの間で生まれたという歴史的経緯が示されている。つまり、本質的な意味でのリファクタリングは、どのようなプログラム言語にも適用し得る可能性があり、特に上記書籍で示されたリファクタリングの手順は、たいていのオブジェクト指向プログラム言語に対して適用可能と思ってよいだろう。つまり、C#/C++/Visual Basicなどに適用することができる。
では、より具体的にリファクタリングとは何をするものだろうか。上記書籍に掲載されたリファクタリングという言葉の定義を以下に引用しよう。
|
つまり、リファクタリングとはソース・コードを書き換える手順を意味するが、それによってソフトウェアの機能は増えない。しかし、機能を増やさないソース・コードの書き換えにどのような効能があるのだろうか?
上記書籍では以下のような効能を説いている。
|
設計してからソース・コードを書くものと考えていると理解できない可能性があるが、設計とはソース・コードの抽象的な構造であると考えれば、その構造の改善が設計の改善ということになる。事前に完ぺきな設計さえできていればそのような作業は不要と考えているのであれば、それはあり得ない非現実的な思い込みにすぎないので、もっと現実を直視した方がよいだろう。
ちなみに、事前の完ぺきな設計が可能であるという前提に立った開発方法論などは世の中に山ほどあるが、それらとリファクタリングは本来相いれない。それにもかかわらず、双方が同時に成立するという主張が聞かれることもあるが、それらはまゆに唾を付けつつ聞いた方がよいだろう。
|
リファクタリングは、ソース・コード上の分かりにくい部分を、より分かりやすく修正する。極端なことをいえば、何が書かれているのかさっぱり理解できないソース・コードを、読めば理解できるソース・コードに変化させることができるということである。ソース・コードが分かりやすくなれば、ソース・コードを扱うあらゆる作業によい結果をもたらすことになる。
|
ソース・コードが理解しやすくなれば、それだけバグの発見も容易になる。なかなか見つからないバグは、往々にして分かりにくいソース・コードによって隠されていることがある。このようなケースでは、リファクタリングにはバグを白日の下に引き出す効能があるといえる。
また、リファクタリングという作業そのものの過程で、バグの存在に気付くこともある。
|
例えば、1つの作業が一段落するごとにリファクタリングを行う場合と、リファクタリングを一切行わない場合では、どちらがより早くプログラムを完成させられるだろうか? リファクタリングは何の機能も増やさないという事実から、後者の方が早いという印象を持つ方も多いと思う。しかし、実は多くの場合、前者の方が素早くプログラムを完成させられるのである。理解しやすいソース・コードはソース・コードに関するあらゆる作業の効率をアップさせるが、それによる時間の節約は、リファクタリングを行うために費やされる時間よりもはるかに多いケースが珍しくないのである。
以上のようにリファクタリングには大きな効能がある。それを支援するための機能を持つという理由でEclipseには高い価値があるとする意見が聞かれることもあったし、Visual Studio用のリファクタリング支援プラグインもサードパーティより提供されてきた。しかし、VS 2005になって、ついにリファクタリング支援機能は標準で組み込まれたのである。
そして、標準で提供された以上は、これを使わないのはあまりにもったいない話である。使い方は難しくなく、それでいて強力な機能なので、ぜひこれを活用してみよう。本稿では、VS 2005が持つリファクタリング機能を具体的に紹介していく。
【ご注意!】非常に重要な注意をこの記事の最後に書き記している。途中で読むのを打ち切る場合には、最後の部分だけは必ず目を通していただきたい。よろしくお願いしたい。
リファクタリング支援機能カタログ
VS 2005のリファクタリング支援機能は、C#に対して機能する。残念ながらVisual Basicなどのほかの言語では機能しない(次項で解説している「名前の変更」だけはVisual Basicでも可能)。本稿ではVS 2005 Professional Edition上でC#を用いて解説を行っている。
リファクタリング支援機能は、コード画面を右クリックすると表示されるコンテキスト・メニューに含まれる[リファクタ]を選ぶと利用可能な機能が一覧表示される。
![]() |
| リファクタリングを実行するためのメニュー |
| リファクタリング支援機能は、コード画面においてコンテキスト・メニューの[リファクタ]メニューから発動させることができる。 |
リファクタリング支援機能は、Visual Studioから見ると一種のコード・スニペットとして扱われており、項目の管理は[ツール]メニューの[コード スニペット マネージャ]から行える。
![]() |
| コード・スニペット・マネージャ |
| リファクタリング支援機能の項目はコード・スニペット・マネージャで管理されており、項目の追加、削除などはここから行うことができる |
では、[リファクタ]メニューに表示される7つの機能を1つずつ見ていこう。
| INDEX | ||
| [特集] VS 2005「リファクタリング支援機能」徹底レビュー | ||
| 1. リファクタリングとは何か? | ||
| 2. 名前の変更 | ||
| 3. メソッドの抽出/フィールドのカプセル化 | ||
| 4. インターフェイスの抽出/ローカル変数をパラメータへ昇格/パラメータの削除とパラメータ順序の再変更 | ||
| 5. 実は不完全なVS 2005のリファクタリング機能 | ||
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




