序言
如果时间不够,可以只读第一章,作者用一个例子完整的展示了重构的思路与操作。
一、为什么需要重构
是时候祭出这张图了
想必大家都遇到过这种情况:
N个需求之后,自己看不懂自己写的代码;
看着某个古老的源代码,头疼不已;
…
随着时间的推移,系统架构会腐败变质,一个设计欠佳的,到处重复的代码,修改起来真的很崩溃。
对于系统来说,最后一位开发人员才是最重要的,所以重构代码能给我们至少四个好处:
- 保持架构的设计
- 增加已读性,使代码容易理解
- 帮助寻找bug,在重构的过程中,重新理解代码的行为,能帮助找出一些隐藏的bug
- 提高编程速度
当然,任何事都有两面性,对代码进行重构,也会引入一些问题:比如性能损耗
二、如何将一段代码提炼成函数
1、 从原函数中分离出不同的关注点
2、 检查离开原作用域的变量
1)将变量分类:
- 作用域内未修改:传入参数
- 作用域内修改:返回值
2)根据变量的类型,重命名变量
好的变量命名是代码清晰的关键,不必通过阅读函数体来了解其行为
作者的个人风格:永远将函数的返回值命名为result
3、减少局部作用域的临时变量
用查询代替临时变量
举个及其简单的例子:
临时变量
var list_count=getCount();
var result=list_count*2;
查询重构
var result=getCount()*2;