被那个几千行的方法恶心后,就开始着手对代码进行重构。
由于重构前的代码基本是不可测的状态,所以此次基本上是推倒重来式的重构(只有部分业务逻辑代码重用)。
花了三天时间,把原有的业务逻辑梳理后,按照下面三个原则重新设计代码流程:
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天,我打他屁股。
相关推荐
1. 重构的目的:为什么重构(why) 2. 重构的对象:重构什么(what) 3. 重构的时机:什么时候重构(when) 4. 重构的方法:如何重构(how)
针对软件模型检测目前很难处理大型程序的问题,提出用程序重构技术对待检的源代码进行预处理,以提高模型检测算法的效率.程序重构将大型程序分解成语义一致的小型过程的集合,由于模型检测算法中过程总结边可单独计算,...
小波分解与重构的几个matlab程序,解决小波分解与重构的问题,特上传几个小程序供大家参考
配网重构中,很重要的一个约束条件为配网应随时保持开环、辐射的状态: 配电网系统是属于闭环设计但是开环运行的系统,因此,在开关的开闭过程中,随时保持配电网的开环状态时很重要。Mendoza等利用图论,尤其是基本...
很好用的小波重构程序,大家积极下载啊,我已经使用过,没有错误
数据信号处理matlab,程序实现压缩感知重构过程,仅供参考。
本文章是一篇基于负荷平衡的配电网络网络重构程序,较为复杂!
软件设计是演进过程,而重构是设计演进的基本方法。重构是指不改变软件行为的前提下,修改程序内部结构。重构说简单,做不简单。首先,需要知道代码的好坏,即代码异味,设计原则等。其次,需要以自动测试作为保障。
重构重构重构重构重构重构重构重构重构重构
重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt重构ppt
matlab编写的陷波滤波器和维纳滤波器重构模糊图像的程序,还有一个程序实现了冈萨雷斯的《数字图像处理》第5章第20题的问题。
面向对象——代码重构源码(包含重构前后代码),是对《重构——改善既有代码的设计》一书中第一章节实例的模拟实现,实例是为影片出租店所用的租赁程序。
程序可实现图像的小波分解和重构,严格按照2:1比例分解和重构,避免了MATLAB软件提供的小波函数不是2:1抽样的缺点。
社区团购系列报告:履约重构提效率,仓储物流迎变局.pdf
【程序老媛出品,必属精品,亲测校正,质量保证】 资源名:用于信号的EMD、EEMD、VMD分解_vmd重构_故障诊断emd_故障诊断_故障重构_VMD信号重构 资源类型:matlab项目全套源码 源码介绍:用于信号的分解、降噪和重构...
r重构r重构r重构r重构r重构r重构r重构r重构r重构
C语言和MATLAB混合编程实现,混沌序列的相空间重构的MATLABT程序。
什么是重构 程序清晰易读好处 MVC模式 MVC模式套用