インターフェイスの変更はリファクタリング?

2007年9月2日

コード一部のインターフェイスを変更することはリファクタリングになりますか?

この質問への答えはごく単純です。インターフェイスを変更することは、すべての呼び出し元を変更する場合にリファクタリングになります。その好例がメソッド名の変更です。これはインターフェイスを変更するリファクタリングであり、ほとんどすべてのリファクタリングツールに搭載されています。

すべての呼び出し元を変更することは、このリファクタリングの重要な部分です。インターフェイスの宣言のみを変更すると、システムが壊れます。つまり、動作を保持する変更ではありません。

インターフェイスを変更するリファクタリングでは、すべての呼び出し元を取得できると想定されています。そのため、公開インターフェイスでは、より注意する必要があります。公開インターフェイスでは、インターフェイス自体がシステムの観測可能な動作の一部です。

動的言語では、これらの変更がより厄介になる可能性があります。静的型付けは、さまざまな時点でどのインターフェイスが呼び出されているかを正確に特定する上で本当に役立ちます。反射呼び出しは、メソッド名を文字列に埋め込むか、実行時に構成することで、検出をさらに困難にする可能性があります。リファクタリングツールがある環境でも、テストが不可欠なもう1つの領域です。