重构

缘毛太行花(评估等级:CR

疫情期间由于**舆论36计,民众恐慌导致囤药太多,

**组织了二次药品 检验和交易平台

(业务已下线)

接下来讲解的是一个业务流程代码的重构优化

大致业务

查询买家信息(注册信息,认证信息)

查询卖家信息(注册信息,认证信息)

验证卖家买家是否已被拉黑或是否在被投诉流程中,防止药贩子和恶意攻击系统

系统代购,依据代购数量和价格上限等,筛选商品列表下单并通知

价格合理性校验,防止恶意抬高价格,本着互惠的原则和药品检验和物流等因素,价格不能<1

重构前的伪代码

查询买家信息(注册信息,认证信息)

查询卖家信息(注册信息,认证信息)

交易双方身份合法性校验

买方购买数量和报价合理性校验

卖方商品价格合理性校验

筛选商品列表

循环 下单,减库存,记录日志

现状:

循环操作数据库,命名不规范(例如无法体现买卖双方的变量命名a,a1。

仅这一个原因就引发bug10次以上)

代码行数>300(仅最外层)

内部方法参数多者有20多个

尽管有提取的方法,却承担多职责,并且方法内容和方法名描述不一致。例如查询交易双方的信息,却顺带者把交易意向写了,方法名却是query

sql 多个地方 select * 但却只用了部分字段。mybatis以及plus,虽然方便

但是也导致不愿意书写更多代码,从而导致许多的全字段查询,即便有listObj

也成了花瓶

库存安全由其它板块保证,你可以认为到这里的流量的购买数量之和一定是<=库存数量的

重构后:

变量名有意义的单词替代并增加标识,便于区分数据身份

新建多个数据对象(买卖记录,结果日志),封装对应的数据库查询的。数据对象主要三个:买药多表信息,贩卖药多表信息,中间(订单、意向等)。并且成员变量中也加入了buyer、seller标识,方便区分

各个表数据,对象替代单个参数,以减少入参个数

解决循环操作库存,查询的移动到循环外,变更的采用batch

多次查询的能否整合到一次查询,则整合到一起

☆☆☆整合/拆分业务逻辑,细分业务边界,确保职责单一,减少外层方法行数。这个耗时比较多,源代码顺序和逻辑并不清晰。最有意思的就是其中的if...else ,为了阻止药贩子以及技术薅羊毛等对平台攻击的手段,版本1并没有列出商品列表,而是由系统代为寻找,书写者就写出了 如果 买够了 怎么样,如果没买够怎么样,其实这两堆代码绝大部分都是重复的

#招聘##重构##悬赏##帮帮团#
全部评论
有没有可能,我是说可能,居民是不能私自卖药的。。。
点赞
送花
回复 分享
发布于 05-26 22:37 广东

相关推荐

头像
不愿透露姓名的神秘牛友
06-01 16:53
已编辑
hua某 外包合规岗 薪资离1w有差距,五险一金按最低缴纳 法硕
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务