猿问

Monolith 的自动重构

我们有一个相当大的单片软件,我们想在更大的范围内进行重构。第一步是派生出几个可以独立编译的工件。鉴于应用程序的大小,我们希望尽可能自动化。


一个例子:


+ package1

|    |

|    + Service1

|

+ package2

|    |

|    + Service2

|

+ interfacepackage

假设,Service1仅在内部使用package1,不应触及。假设Service2用于Service1我想自动生成一个最小接口Service2,将该接口放入包中interfacepackage并将其中的依赖项更改Service1为该接口。


手动执行此操作一点也不麻烦。Idea 和 Eclipse 都提供半自动重构,但我们希望将它们制定为元规则。我曾希望 eclipse 或 intellij 有一个编程接口来定义这些规则,但我还没有找到它们。


我什至找到了 eclipse 重构脚本,但这些似乎仅限于命名类的重构,所以如果我知道所有应该重构的服务,eclipse 重构脚本会有所帮助,但如果我想定义要重构的类的条件,则不会。


我应该在哪里寻找解决方案?


澄清:评论:那么你的问题是什么?


我们有高达 3 位数的服务构成了这个整体。这些大约是。20 种不同的包装。整个软件接近100万行代码。我的问题只是大小。手动进行重构可能需要几个月的时间,我们可能会错过一些手动进行的事情。此外,消除服务的纠缠只是第一步。所以我们期待在未来应用很多类似的重构。


交互式爱情
浏览 86回答 1
1回答

狐的传说

IntelliJ IDEA 有一个“open api”,可用于插件开发。优点是 IntelliJ 解析 java 代码,“元模型”可供插件作者使用。在 IntelliJ 中,“AST”模型指的是“抽象语法树”。这种结构对于进行重构的插件来说是无价的。你可以很容易地看到包结构、类名、代码等等。
随时随地看视频慕课网APP

相关分类

Java
我要回答