被那个几千行的方法恶心后,就开始着手对代码进行重构。
由于重构前的代码基本是不可测的状态,所以此次基本上是推倒重来式的重构(只有部分业务逻辑代码重用)。
花了三天时间,把原有的业务逻辑梳理后,按照下面三个原则重新设计代码流程:
1:流程处理与各个业务的逻辑处理分开,实现流程与业务解耦
2:不同的业务规则代码分开,实现业务间解耦
3:同一业务规则的实现代码集中在一个实现类里,实现业务代码聚合
2:不同的业务规则代码分开,实现业务间解耦
3:同一业务规则的实现代码集中在一个实现类里,实现业务代码聚合
粘一个丑陋的类图:
如此设计的原因是:
1:虽然业务纷杂,五花八门,但大体上的业务处理流程是一样的,而且非常稳定(快两年了,流程仍然是最初的5大步骤)。将流程代码剥离之后,业务只需专注于每个处理步骤的实现,测试范围大大缩小。
2:由于在数据库中,一个业务表被多个业务复用,一个表字段在不同业务中代表含义不同的现象非常普遍。造成业务代码中重复的if.else.判断非常多。 代码可读性很差,而且难于维护(一个简单的业务变动要改20几个地方,漏掉几个也难以测试出来)。
因此,把所有业务抽象了一个 abstract父类,所有具体业务都是该类的子类。 业务判断只在一个factory类里体现。业务变更的改动范围大大缩小。
3:同一业务的具体处理逻辑都在一个类里实现,实现同一个业务处理接口。由于接口封装了业务的变动,使流程处理的代码稳定下来。 增加新业务,只要实现该接口即可,大大减少了代码编写量。
重构后效果对比:(重构前,修改过一个简单的业务变更)
重构前:修改代码40行,花了1多小时。(改了10几处,大部分时间在看代码,眼都看花了)
重构后:只需改动2 行代码,不会超过5分钟。
重构后:只需改动2 行代码,不会超过5分钟。
重构前:测试花了2天,只覆盖变动的业务,改动代码涉及的其它业务没测试(都测一遍估计要半个月)。
重构后:0.5小时。
重构后:0.5小时。
从此以后:谁再说改这个业务要2天,我打他屁股。
相关推荐
重构是软件开发过程中的一个重要环节,它涉及到代码的优化、设计改进和质量提升,而不改变程序的外部行为。本文将详细探讨重构的目的、对象、时机和方法,帮助开发者理解和掌握重构的核心理念。 **重构的目的(Why...
该项目是针对eInkUI设计的源码eink-clock-mP的重构工程,涉及769个文件,包括699个PNG图像文件、39个Python源代码文件、13个JPG图片文件、5个XML文件、4个Markdown文件、2个Git忽略文件、2个字体文件、1个IDE配置...
小波分解是将一个信号或图像分解成不同频率成分的过程,这些成分由小波函数的不同尺度和位置表示。2:1抽样比例指的是在分解过程中,每一层细节信息的分辨率减半,而时间或空间轴上的采样点数保持不变,这样可以保证...
这个压缩包文件“代码重构源码(包含重构前后代码)”提供了面向对象编程领域中的一个实例,具体是对影片出租店租赁程序的重构过程。通过对原始代码(First_Instance_Original)进行分析和改进,我们可以深入理解...
1. **信号采样**:根据压缩感知理论,通过一个测量矩阵(如随机矩阵或离散余弦变换矩阵)对原始信号进行采样,得到压缩后的观测值。 2. **稀疏表示**:将原始信号转换到一个基域,使得信号在此域内变得稀疏。常用的...
而`小波分解与重构的几个matlab程序`很可能是一个包含多个示例脚本或函数的文件,每个都演示了特定的小波分解和重构方法。初学者可以通过运行这些程序,观察输出结果,对比不同小波基和分解层次对信号处理的影响。 ...
1. **分离界面元素**:首先,我们需要将界面元素(如按钮、文本框等)的声明和初始化提取出来,形成一个单独的方法 `findViews`。 ```java private Button calcbutton; private EditText fieldheight; private...
《Delphi重构器程序详解及应用》 在软件开发领域,重构是一项至关重要的工作,它旨在改善代码结构,提高代码...正确且有效地利用重构器,可以大大提高开发效率,降低维护成本,是每一个Delphi开发者都应该掌握的技能。
《软件重构讲义》是关于软件开发中重构技术的一份资料,主要涵盖了重构的基本概念、目的、...这份资料为开发者提供了一个深入理解重构概念和技术的框架,对于提升个人和团队的开发效率及软件质量具有重要的指导价值。
5. **评估与优化**:对重构后的网络进行潮流计算,评估重构效果,可能涉及电压稳定性、功率损耗和故障恢复时间等多个指标,进行迭代优化。 在这个过程中,可以使用各种优化算法,如遗传算法、粒子群优化、模糊逻辑...
在提供的文件"Volterra_混沌序列的相空间重构"中,很可能包含了一个具体的MATLAB程序,用于演示如何进行上述步骤。该程序可能涉及了计算延迟时间、确定嵌入维数,并进行相空间重构的实际操作。通过分析这个程序,...
- `PRISM.rar`:PRISM可能是“概率风险感应系统”的缩写,可能是一个用于风险评估或决策制定的算法程序。 - `GPSR_6.0.rar`:GPSR可能指的是“全局定位系统重构造”算法,这是一个可能用于导航或数据恢复的算法。 ...
"notch"通常指的是陷波滤波,而"others"可能包含了其他的滤波方法或者图像重构的相关程序。这些代码可以帮助读者理解陷波滤波器和维纳滤波器的实现过程,并提供了一个实践图像重构的平台。 通过运行和分析这些代码...
为了解决这个问题,本文提出了一个自动锁分解重构的方法,使用静态程序分析和重构技术来自动检测锁的粒度和重构机会,并生成高效的锁分解代码。 自动锁分解重构的步骤主要包括以下几个方面: 1.锁的粒度分析:使用...
2. 内联函数(Inline Method):如果一个函数只在一个地方被调用,可以将其内容直接替换到调用位置,减少层次,提高效率。 3. 将类的职责分离(Split Class):如果一个类承担了过多职责,应将其拆分为多个更专注的...