【问题标题】:Is there a way in Java to incrementally change a class name?Java中有没有办法增量更改类名?
【发布时间】: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 表示希望更改类名以反映其行为

标签: java migration classname


【解决方案1】:

使用Eclipse 等IDE 并使用其重构工具重命名类。这将在任何使用它的地方自动更改它,更新导入等。

【讨论】:

  • 你有更多关于具体更改类名的详细信息吗?
  • 真正的答案是“没有办法有两个等价的类名”我会考虑使用 Eclipse 来执行更改。
猜你喜欢
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多