重构系列谈(二)Baby Step

Baby step的优势:

我们对于复杂事物的处理思路一般来说都是分而治之,分解成一个个小节点+节点间链接,这样问题就被分解为两部分:在一个小节点内进行思考和设计,这样复杂度就比较小,过程比较清晰,每个小节点的结果也容易预期;节点间链接专门处理接口和协作,节点和关系各自管理自己的复杂度;如果重构的步子过大,就会把复杂度不高的n个事物揉在一起,复杂度的递增往往不是加法关系,可能会是乘法甚至几何数量级递增,人脑短期内很难hold住,从而失去控制感,产生强烈挫败感。

Baby step讲究缩短思考过程,一个个小节奏处理问题,用例-》功能-》消除坏味道,这3步组成一个小循环,然后下一个场景又是一个这样的小循环,循环接着循环,形成滚动的效果。由于每次处理问题粒度小,始终可以保持思考和重构过程的可控性和连续性,这样就可以减少大段思维跳跃带来的不易察觉的逻辑错误。

小步快跑可以带来快速的反馈,出了问题可以小粒度的范围解决,然后再奔向下一个目标,如果粒度很大,就需要大脑在不同的小节点间进行场景切换,造成精益中说的8种浪费之一的不必要移动的浪费。

b、Small Win

玩游戏打怪过程中大家都有体会,完成任务,消灭怪物都会及时获得奖励:赚取金币、提升等级、缴获宝物等,这些small win反过来会激励你继续打下一个怪,很容易不知疲倦甚至上瘾。

重构的过程中坚持baby step,每次完成一个小步,测试用例通过立即获得反馈,虽然是一个很小的成功,也会促使人脑分泌多巴胺,让人获得成功的愉悦感,从而激励大家不停的往下重构,这种baby step模式下,整个重构感觉就像玩游戏一样,不停step by step,不断获得重构的乐趣。

坚持baby step,可以保持版本随时可用性,真正实践“重构是随时可以停止的”这条承诺。

如何做好小步快跑呢?

首先是步骤

每个baby step中都至少包含三步:测试用例-》功能实现-》消除坏味道,然后切换到下一个step重复这些步骤。

其次就是做好拆分,这也是要点和难点,对于如何把要重构的目标分解成一个个的small step呢?老乐常用的方法如下:

1、按场景拆分

2、按业务流拆分

比如业务流分为A、B、C、D、E五步,第一个step处理A-》E,BCD pass by,第二个step处理A-》B-》E,step 3处理A-》B-》C-》E,最后一个step处理A-》B-》C-》D-》E。

3、按simple-》complex拆分

就像画画一样,一个step勾勒出轮廓,再用一个个step完善丰富细节。这个方法可以看做是按场景拆分和按业务流拆分的组合。

4、按时间顺序

5、逐个消除代码坏味道

其他还有一些技巧,文字可能不方便充分表达,老乐用录屏软件录了一段视频,里面有4个需求变化,演示了需求变化时,如何通过baby step的方式进行用例设计、功能拆分、消除代码坏味道等手法,有兴趣的童鞋可以微信联系我,发给大家对照参考下。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/213225.html

联系我们
联系我们
分享本页
返回顶部