【发布时间】:2013-01-25 06:23:24
【问题描述】:
我有大量使用类 XXX 的 Java 代码。随着时间的推移,类的含义发生了变化,名称不再合适。为了使代码更具可读性,我想将类的名称更改为 YYY。
一个选项是一次编辑所有文件并将XXX更改为YYY,但类的实际名称不是唯一的——还有其他同名的类,不同的包——所以我需要看代码。我希望能够进行一些更改,测试它是否正确,然后再更改一些,测试更多等。在此过渡期间,我希望能够交替使用 YYY 和 XXX。最终我会消除 XXX。
我需要的是一个“别名”概念,我可以在其中制作 YYY 和 XXX 的别名,但 Java 没有这个。
我可以使用所有相同的构造函数和方法使 YYY 成为 XXX 的子类。这将在变量声明为 XXX 并且我分配一个 YYY 类型的值的情况下正常工作。它也适用于方法参数为 XXX 并且我传递 YYY 的情况。但是当参数被声明为 YYY 并且我有一个 XXX 值要发送时,它不会起作用。
我可以将 YYY 注入到继承中,让 XXX 扩展 YYY,但我遇到了与上面相同的问题:在混合使用 XXX 声明和 YYY 值的代码中存在问题。
过渡时间将需要几个月的时间。在这段时间里,我不关心性能或效率,我只需要它编译和运行足够正确以进行测试。 对于允许在 Java 代码主体中增量更改类名的最佳做法有什么建议吗?
更新
下面的答案是,虽然在 Java 中没有办法做到这一点,但也应该没有理由这样做。我跟进安装和重构代码,并将经验写在这篇博文中:Don’t Suffer Poor Names
【问题讨论】:
-
你的系统有多大?
-
代码库不是系统运行时的
huge,而是一个人维护的大型代码库:100K 到 200K 行。 -
可能的选择:给它一个公共版本的字符串字段?给它一个私有的 long serialVersionUID 字段?
-
使用 IDE 重命名已经有了答案,但听起来你真的应该研究现代软件开发工具。至少在您的代码库中尝试 Eclipse、Netbeans 和 IntelliJ Idea a,看看哪个最适合您。然后修复 IDE 抱怨的问题(配置以禁用您不想关心的警告,在谷歌搜索您不理解的警告之后)。然后查看他们提供的所有重构工具,并停止使用您知道应该重构的代码来积累技术债务,但这似乎太难了。
-
+1 表示希望更改类名以反映其行为