java - 将代码分离到不同的类 [Java]

标签 java refactoring automated-refactoring

我有一个臃肿的 JDialog 类(约 2000 行),它显示两个不相关的 JTable。我想将它分成三个类(JDialog、Jtable1 和 JTable2)。我可以研究每个表使用哪些变量和哪些方法,并将它们移动到相关的类,但是这种手动重构会很乏味。

有什么方法可以自动化这样的重构吗?

<小时/>

为了实现这一点,脚本应该有一个 token 累加器。例如,第一个标记是来自 panel.add(jTable2) 的 jTable2。现在检查所有包含 jTable2 的行并将标记添加到累加器。重复搜索相关 token ,直到找不到新 token 为止。现在,对于每个标记,查找包含它的行。扩展选择以包含括号。

很难相信,可以说是最大的语言的程序员还没有创建这样的工具。这应该与 IDE 中的查找用法工具非常相似。

最佳答案

自动?不,谢天谢地。重构需要思考。深度学习还没有出现。

大多数 IDE(例如 JetBrains 的 IntelliJ,市场上最好的 IDE)都具有出色的重构支持。

但它不会为你思考。

一条建议:如果您进行单元测试、以小的增量方式进行测试并使用版本控制系统,那么您的运气会更好。编写测试,进行更改,显示测试仍然通过,提交更改,重复。

您始终可以通过这种方式返回到上一个工作版本。一个增量步骤不会造成更大的困惑。

我认为您可以做得更好:也考虑将监听器移出 UI 并处理代码。 Swing 应用程序最终会出现大类,因为人们学会将所有内容都塞进 UI 类中。如果你分解它,你会发现代码更容易阅读,更模块化,并且更容易进行单元测试。

关于java - 将代码分离到不同的类 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38793270/

相关文章:

Python:在单个文件中获取函数和所有依赖项的好方法?

java - Eclipse 重构 : move method inside collaborator

matlab - 在 MATLAB 中重构

java - 使用 Google pub/sub 更新单例 HashMap

c# - 如何使此代码更易于管理碰撞音频?

dependency-injection - 如何重构静态类以使用依赖注入(inject)?

在 iSeries (RPG) 中重构,是否现实

java - 如何从 java 中的 catch block 调用方法?

java - 嵌套 n :m + attributes JPA

Java线程与其他程序通信