パターンとリファクタリング

結城浩

2002年12月10日

[PI] C MAGAZINEの連載記事をせっせと書いている。 プログラムはできた。あとは図と文章だ。 今回(次回)はGeneration Gapパターン。

[REF] C MAGAZINEではパターンの連載をしていて、 JAVA Developerではリファクタリングの連載をしています。 そして、パターンとリファクタリングの間には確かに深い関係があるなあ、と思います (『リファクタリング』の中にはパターンとリファクタリングの関連性が書かれています)。

たとえば「パターンを適用・導入する」というリファクタリングがいくつかあります。 「Template Methodパターンを適用する」のようなリファクタリングですね。 「State/Strategyパターンを適用する」なんていうのもありますね。 これらは、パターンを適用することで、 プログラムの機能を変えることなくソースコードの質を改善しています。 パターンが、リファクタリングに目標地点を与えるわけです。

ちょっと高い視点から見てみましょう。 リファクタリングという活動そのものは、 広い意味でのパターンといえるかもしれません。

  • 個々のリファクタリングに名前は付いているかな? うん、付いてる。
  • リファクタリングは繰り返し発生する問題に対する解決を与えるものかな? うん、そうだ。
  • リファクタリングには、制約・適用可能性・結果・関連などが登場するかな? してるしてる。

実はこれらの内容は、JAVA Developer連載開始時から気にかかっていて、 1つの小さな試みをしています。 それは、JAVA Developer連載で記述している「リファクタリング・カタログ」を、 よりパターンっぽく書こうというものです。 まあ、半分自己満足のようなものですけれど。

ところで…こういう話を、私は原稿に書かなければならないのではあるまいか。仕事、仕事。