读书笔记---《重构》

读本书的目的:
改善已有代码的设计.
读书前的Tips:
(1)吸收一本书的精华,是先接受它而不是排斥它.
(2)个人建议初学者在代码编码完成前先不要重构.

第一章

1、确保即将修改的代码拥有一组可靠的测试。
2、“提炼函数”是一个常见的可自动完成的重构。
3、软件的性能通常只与代码的一小部分相关。
4、将不同的逻辑分在不同的文件中。
5、重构的步伐要小,一步一步的向前推进,小的步子可以更快前进,请保持代码永远处于可工作的状态。

第二章

1、重构不关心代码性能,只关心是否容易理解,易于修改。
2、添加新功能时,添加测试,不应该修改代码。
3、重构时,不添加新功能,只改代码结构。
重构:
1、改进软件设计,改进内部设计或架构。
2、内部质量良好的软件让人可以很容易找到在哪里修改,如何修改。
3、重构先从一些小细节上重构,例如改个变量名方便理解,将一个长函数拆成几个小函数。
4、重构替换掉正在使用的库时,应当先抽象层,使其兼容新旧两个库的接口。
5、分支向主线提交的间隔不宜过大,否则难度加倍,测试难度就大了。

第三章

1、不好的代码:
(1)神秘命名
(2)重复代码
(3)过长函数
2、将长函数提炼成短函数:
(1)寻找注释
(2)条件表达式和循环
条件表达式每一个分支做成一个函数
循环体提炼到一个独立的函数
3、过长的参数列表,将参数合并成一个函数。
4、将全局数据用一个函数包装起来。
5、修改结构含有数据,不要直接修改数据,而是引用对象改为值对象,替换整个数据结构。
6、所有相同功能的放在同一模块里。
7、使用管道代替循环。
8、使用类的好处是可替换。

第四章

1、花在调试上的时间多于编码。
2、想重构,必须编码测试。
3、测试用例的使用,入口数据,出口数据是否符合预期。
4、测试用例在于不用重启服务,只测试某一个函数。

第六章

重构的操作:
(1)提炼函数(提炼),内联函数(合并)
(2)提炼变量(将长的表达式用变量代替)
注:sql语句拼接
(3)改变函数名,保留原有函数,重写新函数,当客户端全部改完名后再删除原有函数。
(4)对数据结构(或数据)的操作做封装。
(5)拆分阶段:同一个函数只做一件事。

第七章

封装:
(1)封装记录
(2)封装集合
(3)以对象取代基本类型
(4)提炼类,内联类(合并)
(5)封装委托关系:目的是去除依赖
(6)替换算法:将原先的算法替换成一个轻易修改的算法。

第八章

1、修改循环:
(1)拆分循环,确保每个循环只做一件事。
(2)以管道取循环,直接消灭整个循环。
2、移除死代码
3、若函数与其他模块频繁的交互,需要搬移函数,减少依赖。
4、搬移函数:
(1)从依赖最少的函数入手
(2)搬移函数
(3)将原有的函数变成纯委托函数(即二次封装)
5、最初创建数据表时,最好预留几个字段,方便后期使用。
数据库的职能也应该保持单一。
6、若修改字段要修改多处时,将字段搬移到集中的地点,这样每次只需修改一个地方。
7、维护代码库的健康,最重要的是消除重复。
8、保持程序结构一致,抽象合宜。
9、原函数的判断条件变化(边界发生偏移),提炼函数,重写函数,删除提炼函数。
10、拆分循环:
(1)循环只计算一个值,直接返回该值即可。
(2)循环不做太多事,返回结构型数据或通过局部变量传值。
11、用管道取代循环

第九章

1、变量承担的职责单一,只被赋值一次(除循环变量,结果变量)
2、字段改名,一个结构体只做一件事

第十章

简化条件逻辑:
(1)对条件判断和每个条件分支分别运用提炼函数
(2)合并条件表达式
(3)以卫语句取代嵌套条件表达式,直接返回。
注:卫语句:一个条件表达式下用函数返回。
(4)特例检查,用一个函数调用取代大部分特例检查逻辑。

第十一章

1、因为标记的不同,不同行为的函数应该彻底分开。
2、行为相同,参数不同,消除重复。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值