• 重构 Java 屎山代码的一种妄想,大佬们给点意见
  • 发布于 2个月前
  • 393 热度
    4 评论
前提:
假设能在 java 运行期记录方法执行轨迹
场景:
接手的代码需要加入新功能,有重构老代码的需求,比如现在有方法 method ,这个方法承担 4 个业务,代码混乱/耦合严重,想将 method 拆分为 4 个,记作 method_1/method_2/method_3/method_4,人工去读代码痛苦且低效,期望可以使用代码完成拆分。
理论:
1.java 方法在编译期会生成 AST ,每个代码结构对应语法树中的节点 node ,AST 的分支也就对应方法的代码分支逻辑,比如 if/else 结构表现在 AST 中就是一个分叉,会有两个子分支
2.记录一次方法调用中所有执行过的 node ,这些 node 的集合 nodes 就是这次调用实际执行的代码分支
3.可以将 nodes 转换为代码,就是这次调用的源码
问题
1.如何在 java 运行期标注出某一个方法调用过程实际执行过的 AST 节点集?
2.AST 的节点集如何转化为可执行的代码?
用户评论
  • 张蜚
  • 当年红岭创投重构.Net 到 Java ,花钱请了阿里的外援,全线使用阿里云。当时预计半年能搞完,我给他们预计的是,一年都搞完就不错了。结果最后花了一年多,上线的时候预计 8 小时,最后好像接近 20 小时吧。一个项目,要重构,太多的先决条件了,最重要的就是测试覆盖率。如果测试用例不够,我是绝逼不重构的。
  • 2024/5/27 17:00:00 [ 0 ] [ 0 ] 回复
  • 孤影人
  • 感觉你在找的可能是 Intellij Profile ? By the way...如果你这个 method 的执行效率不是特别离谱,没人吐槽它慢,业务能跑最好别去动它,屎山这玩意谁沾谁脏。
  • 2024/5/27 16:59:00 [ 0 ] [ 0 ] 回复