这是我参与「第四届青训营」笔记创作活动的第14天
重构实践
重构的概念
对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本
遵循重构的方法
封装成员变量、方法提取、一般化类型、将子类的函数移到父类、将父类的函数移到子类、方法更名………
Code Smell
代码的坏味道,预示着即将变坏。重构就是不断对抗Code Smell
技术债的产生和应对
Technical Debt,本应采用最佳方案,但妥协了,从而给未来带来了负担。就像是债务,先欠下了,短期得到了好处,但长期必须偿还。
公开技术债
一开始就与利益相关方权衡技术债的利弊,明确影响和解决方案可以将所有的技术债量化公示,短期和长期技术债可以区分对待大家遵循相同的编码规范。
消费技术债
每次迭代确定一定数量的技术债作为消费目标。 无需偿还技术债的产品是即将消亡、一次性的原型或者短命的产品避免使用过时的技术,旧资产和老方法充斥着安全漏洞,难以集成。
重构方法的运用
重复代码 → 类型一般化,公共代码抽离
函数参数过多 → 将参数封装,通过函数调用获取参数
超长函数,逻辑晦涩 → 提取方法,新建小的子函数
Switch-Case爆炸 → 策略模式,类型抽象
逻辑嵌套 → 提取方法,降低圈复杂度
长调用链:Obj.a().b().c().d() → 隐藏中间人调用
小结
代码中常有技术债,理解它,处理它
重构是在有限范围内运用一定的方法
代码上线
分支开发模式
Main、Hotfix、Release、Develop、Feature、Feature
持续集成概念
Continuous Integration, CI, 将代码频繁的集成到代码仓库中
持续集成并不能消除Bug,而是让它变得容易发现和修正
灰度发布
逐步扩大使用的用户群体,1%→10%→30%→60%→100%
AB实验
干扰因素太多,代码直接上线无法量化收益,指标波动无法归因
后记
通过本节课,了解了重构是限定范围和方法的改造技术,以及代码需要持续得到验证才能够上线。