高橋です。
リファクタリング本を読んでいます。ただ読み進めているだけ
ですと、なかなか身についたと思うには至らないものです。
実際に自分でやってみないとピンとこないようです。
そこで、第1章に例として示されているプログラムのリファクタリング
過程を自分でもプログラムを書きながらたどっていきました。
本ではテストコードは示されていないので、JUnitの勉強も兼ねて
テストケースを作りながら進めてみました。また、リファクタリング
の過程でメトリクスがどう変化していくのかを見てみようと思い、
いくつかのメトリクスを各リファクタリング毎に測定してみました。
(ツールはJMetricを使用)
下記のURLに、その過程・コード・データを記述しています。
#勉強メモなので、走り書きです。
http://www.jws.sis.ne.jp/~torutk/maneuver/2000/6-2.html
このサーバは最近不安定でしばしばアクセス不能になります。
今日も応答ないようです。後日アクセスしてください。または、
上記ページを1/3だけ書いた時点のミラーを下記URLに置いています。
http://www.alles.or.jp/~torutk/oojava/maneuver/2000/6-2.html
やってみると、いろいろ疑問が湧いてくるもので、例えば
リファクタリングが進み、クラスの責務が移動すると、テストケースも
合せて移動させていくか、そのまま残すかといった選択に悩みました。
特にメソッドの移動によって、委譲を繰り返していくと、テストケース
もその都度委譲先のクラスのテストケースに追加していかなくてはと
思います。一方、元のクラスには委譲メソッドが残っているので、この
元のクラスのテストケースを走らせればテストは確認できるという考え
も生じました。このあたりのさじ加減にコツがありそうなのですが・・・
======------======------======
Toru Takahashi, TOSHIBA Corps. KOMUKAI Works
(office)tooru6.takahashi@....jp
(private)torutk@....jp
http://www.alles.or.jp/~torutk/