我有一个臃肿的 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/