http://martinfowler.com/bliki/IsDeclarationOrderingRefactoring.html

リファクタリングの境界線のひとつ

宣言(Javaで言うメソッドやフィールド)の順序を変更することは、リファクタリングと呼べるのか?

現代のプログラミング言語では、宣言の順序が問題になることはない。 2つのメソッドの位置を入れ替えても、プログラムは問題なく動く。 これがリファクタリングないとする人の意見はこうだ。 これはプログラムの挙動を変えていない。 故に、設計も変えていない。 故に、これはリファクタリングではない。

リファクタリングの定義で、 「理解や修正が簡単になるように」というフレーズを使った。 宣言部分を変更すると、理解や修正が簡単になるのだろうか? 私は、そういう場合もあると思う。 同じクラスにある関連した機能を一緒にするのは、理に適っている。 同様に、機能の順序を入れ替えることで、クラスの役割を説明しやすくすることも出来る ——特にテストケースを書くときに役に立つ (ただし、xUnitのなかには順序が動作に影響を及ぼすものもある)。 コードが分かりやすくなるのだから、 宣言の順序変更もリファクタリングと呼んでもよいだろう。

ソフトウェアの内部構造を変更しないという点が紛らわしいかもしれない。 リネームしても実行内容は変化しない。 だがリネームは、プログラムの理解度を向上させる 非常に重要なリファクタリングの一種である。