重构 Java 屎山代码的一种妄想,大佬们评估一下

查看 8|回复 0
作者:wellR   
前提:
  • 假设能在 java 运行期记录方法执行轨迹

    场景:
  • 接手的代码需要加入新功能,有重构老代码的需求,
  • 比如现在有方法 method ,这个方法承担 4 个业务,代码混乱/耦合严重
  • 想将 method 拆分为 4 个,记作 method_1/method_2/method_3/method_4
  • 人工去读代码痛苦且低效,期望可以使用代码完成拆分

    理论:
    [ol]
  • java 方法在编译期会生成 AST ,每个代码结构对应语法树中的节点 node ,AST 的分支也就对应方法的代码分支逻辑,比如 if/else 结构表现在 AST 中就是一个分叉,会有两个子分支
  • 记录一次方法调用中所有执行过的 node ,这些 node 的集合 nodes 就是这次调用实际执行的代码分支
  • 可以将 nodes 转换为代码,就是这次调用的源码
    [/ol]
    问题
  • 如何在 java 运行期标注出某一个方法调用过程实际执行过的 AST 节点集?
  • AST 的节点集如何转化为可执行的代码?
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部