こんにちは、小室と申します。
Kenji Hiranabe wrote:
> 平鍋です.
> >> でも僕は,リファクタリングがオブジェクト指向前提というのも,なんか
> >> 変な気がしています.Extract Method や Rename Method なんか,
> >> 別にC言語の関数に当てはめてもいいですよね.
>
> 確かにそうですね.
>
> でも出発点はオブジェクト指向です.リファクタリングが最初に表
> れる論文であるOpdyke の学位論文では,単一継承の言語におい
> て,リファクタリング(機能を変えないコード構造の変更)が定式化
> され,可能であることが綿密に証明されています.これは,オブ
> ジェクト指向を前提とするものです.Fowler の本は,この論文を
なるほど、そういう仕事があったのですか。
しかし、リファクタリングという言葉(概念)は
そうなのかもしれませんが、
「機能を変えないコード構造の変更」ということなら
Semantic Preserving Program Transformation という
ことだと思うので、そこまでさかのぼればもっと前から
いろいろな研究がありますよね。
実は私自身もプログラム変換をプログラミング環境に応用するという
研究をしていたことがあり、この観点からC言語に対する
プログラム変換ツールを作成したこともあります。
(日本ソフトウェア科学会FOSE96「ソフトウェア工学の基礎III pp.94-97)
実はさらにこれのJava版
(http://www.is.titech.ac.jp/~etsuya/WOOC97/Proceedings/kumeta.ps.gz)
もあって、がんばればこれをベースにJava用のリファクタリングブラウザも作れ
ると
思うのですが、マンパワーがないのでペンディングになってます。
> 元に,Kent Beck との開発を通してリファクタリングを実施可能な
> プラクティスとして現場の目で再構成したものといえるでしょう.
そうですね。プラクティスを実際示したということが
大きいのだと思います。個々の技術は
特に新しいというわけでもなさそうですから。
小室