为什么要重构
如何重构
重构后效果
为什么要重构?
由于各种原因,公司App代码越来越混乱,尤其是分院排期、订单模块(另外一篇文章)这些地方尤为突出。为了赶进度,相似流程会大量的拷贝代码、稍微修改下就拿来使用,时间长了,再来修改这些代码时变得困难重重,而且线上分院排期接口响应非常的慢,有时甚至7、8秒才加载出来依据idea的提示,可以观察到项目里有大量的重复代码警告。当前的业务有体检预约、齿科预约、检后预约...将来可能还会加入其它类型的预约,干活的都是我们这些苦逼小码农,领导是不了解现状的,重构这些代码迫在眉睫
如何重构?
观察各个业务分院排期流程会发现有很多相似之处,比如:分院,有分院名称、分院标识、分院地址、分院介绍等自有属性,用户和分院相关的属性有定位距离等,分院和排期相关的有最近N天排期、更多排期等行为。各个业务排期流程除了获取分院的方式、获取排期数据的方式不一样以外,其他的处理流程都是一样的。
因此我们可以抽象出一个接口IOrgScheduleService,在抽象类AbstractOrgScheduleService中实现相同的处理逻辑,不同的部分可以定义抽象方法供具体子类实现。
具体代码实现因为涉及公司隐私没有具体给出,大概方式就是定义了模板方法。
接口响应过慢的问题是因为内部大量遍历调用依赖服务的接口,数据越多调用的次数会越多。
这里给出一个coroutine的实现:
因为不需要上下文切换,因此更轻量级。
经过一些小的重构,效果怎么样呢?
本篇到此结束,谢谢大家的观看,后期会大量分享开源项目源码、编程语言、扫描器、区块链相关的知识和经验。
领取专属 10元无门槛券
私享最新 技术干货