声明顺序重构

2004年9月1日

更改声明顺序是否属于重构,例如在 Java 程序中更改方法和字段的顺序?

在现代编程语言中,声明特征的顺序不会改变程序本身。如果你在文本文件中交换两个方法,程序不会在意。因此,反对将其视为重构的论据是,它不会改变程序的工作方式,因此不会改变设计,因此不能算作重构。

在我的 重构定义 中,我使用了“使其更容易理解和更便宜地修改”这句话。更改声明可以做到这一点吗?我认为在某些情况下可以。将相关功能放在一个类中是有意义的。你也可以按某种顺序排列这些功能,以帮助解释类的工作原理——这在编写测试用例时尤其有用(尽管在这里,在某些 xunit 实现中,顺序可能会影响执行)。因此,由于它提高了代码的可理解性,我认为重新排序声明是一种重构。

它不改变内部执行的事实是一个无关紧要的因素。更改方法的名称不会改变执行,但重命名是一个非常重要的重构,可以提高程序的可理解性。