用于重构MVC控制器类的Java模式

用于重构MVC控制器类的Java模式,java,model-view-controller,design-patterns,Java,Model View Controller,Design Patterns,所以我继承了这个意大利面后端服务代码库,它大概有10年的历史了,它是用Java和maven编写的。 最初的作者在RequestController类中放入了大量内容,该类具有如下函数 processPostRequestV1 processPostRequestV2 .... processPostRequestV6 及 这一类中的所有实用函数 它们都读写到同一个数据库(感谢上帝),但是这个类有将近20个依赖bean和3000行代码 我想知道,重构这类代码的最佳模式是什么,它似乎是一个编排层,

所以我继承了这个意大利面后端服务代码库,它大概有10年的历史了,它是用Java和maven编写的。 最初的作者在RequestController类中放入了大量内容,该类具有如下函数

processPostRequestV1
processPostRequestV2
....
processPostRequestV6

这一类中的所有实用函数

它们都读写到同一个数据库(感谢上帝),但是这个类有将近20个依赖bean和3000行代码

我想知道,重构这类代码的最佳模式是什么,它似乎是一个编排层,但是应该使用什么模式来管理它的版本呢?(有些版本甚至没有意义,例如,来自旧版本的代码与新版本共享代码,使用新的依赖项等,但这是另一回事)


在MVC模式中,控制器应该从模型/业务层收集/更新数据,这与RequestController类的工作完全相同,我在这里缺少什么?

首先。。。那个班有考试吗?你信任的测试?如果没有,不要重构。首先编写测试

因为重构意味着

更改代码的结构而不改变其行为

如果您有测试,我将创建一个新的结构,并更改RequestController类的方法以委托给新的结构

也许新结构类似于BCE(边界控制器实体)或六边形结构

在清洁建筑的情况下。RequestController将通过用例的输入边界传递请求模型,并向用例传递请求控制器将适应以返回结果的输出边界


看看

您需要重构它吗?如果你只是想,但你没有专业知识,那么最好不要碰它。不要重构它,除非它有bug或者你想添加新的功能。我的意见是,如果你的责任是将这个应用程序再维护10年,那么你应该重构代码,因为你有足够的时间完成其他任务。我要做的第一件事是尝试找到一种为它编写测试的方法。即使这意味着旋转整个应用程序并编写脚本向其发送请求并验证响应(端到端测试)。我明白,测试遗留代码可能很有挑战性,但这些测试将作为您的安全网,这样您就不会在重构时引入bug。
getRequestV1
getRequestV2
...
getRequestV6