点击↑上方↑蓝色“编了个程”关注我~
每周至少一篇原创文章
这是本公众号的第 30 篇原创文章
荒腔走板
![](https://i-blog.csdnimg.cn/blog_migrate/93f19def0c46c4fffbd04d2f5c5fb62a.png)
这周六趁着凉快,出去玩了一天。下午去老婆公司楼下的咖啡厅睡了一下午,醒来后再来一杯老婆亲手做的咖啡和鲜榨的不掺一滴水的果汁。那味道,别提多香了,上头!
❝虽然拉花不完美,但也有模有样。
❞
我发了一个朋友圈,说希望有一天,可以回成都,开一家书店。她做咖啡,我写代码。有朋友评论说,这都不忘写代码,这么敬业的吗!我说,写代码不是工作,是我的兴趣爱好。
其实还有句话没说完,我「想写自己想写的代码」,做自己想做的产品。还想写博客,写小说,还想学画画。当然了,现在这都只是梦想,但是我希望在三十几岁的时候或者之前,能够实现它。
另外说一个事,以后公众号发文章改到周五,这样我有充足的时间去找配图或者自己画图,尽量多弄点好看的图。
下面开始今天的文章。Pipeline设计模式是我在来新公司才接触到的,也是在项目上广泛使用的一种东西。觉得挺有意思的,所以写一篇文章向大家介绍一下,希望大家喜欢。
需求
前几天小明接到一个需求,要开发一个“简单”的支付处理流程,用来处理用户下单后的一系列处理流程。这个处理流程有很多环节,包括:订单计算(包括折扣计算),金额校验,库存校验,优惠券校验,执行支付,扣减优惠券,扣减库存,通知第三方物流,通知用户付款成功,通知商家发货等等。
小明接到这个需求后,心想这个需求不难,就是简单的计算、校验、调接口、发消息之类的。写if-else谁还不会?于是开始刷刷刷写下了三百行代码,就跟下面条一样,一气呵成。
![](https://i-blog.csdnimg.cn/blog_migrate/d1618779d366bacdc10b1b9e63d48778.png)
重构
代码是写完了。不过在Code Review的时候,被老大劈头盖脸地骂了一顿:“你这代码全挤在一堆,叫别人以后怎么维护?你自己过两个月看得懂吗?”
小明懂老大的意思,代码的可读性很重要,这样以后维护起来才方便。所以抽了一些方法出来,主入口只保留最核心的流程。顺便还加了单元测试来保证内部逻辑的正确性。
![](https://i-blog.csdnimg.cn/blog_migrate/5a811b19bdf1f15fa04b09681072b096.png)
改完后给老大一看,老大语重心长地说道“小明啊,代码可读性很重要,可维护性也很重要。你看,有些环节在其它场景说不定也能用到,比如库存校验、执行支付、发通知等等。”
“我懂的,这样,我把这些流程抽成单独的类,这样以后就可以复用了”。
![](https://i-blog.csdnimg.cn/blog_migrate/2cf337d94e6ebd40e4077d4783349461.png)
写完后再次给老大过目。老大看后点点头:“不错,现