《重构》-2-重构原则-读书笔记

1、何谓重构

(1)重构不只是整理代码,而是一种更搞笑且受控的代码整理技术。

(2)但必须对软件【可受观察之外部行为】只造成很小变化,或甚至不造成变化。与之形成对比的是【性能优化】。和重构一样,性能优化通常不会改变组件的行为,只会改变其内部结构。但是两者出发点不同:性能优化往往使代码较难理解,但为了得到所需的性能你不得不那么做。

(3)两顶帽子:开发新功能、重构,会交替进行,但无论何时你都应该清楚自己戴的是哪一顶帽子


2、为何重构

改进软件的设计:

(1)如果没有重构,程序的设计会逐渐腐败变质。在完全理解整体设计之前,就贸然修改代码,程序将逐渐失去自己的结构,程序员愈来愈难通过阅读源码而理解原本设计。

(2)代码数量减少并不会使系统运行更快,因为这对程序的运行轨迹几乎没有任何明显影响。然而代码数量减少将使未来可能的程序修改动作容易得多。

(3)如果你要修改一处功能,而修改多处代码,代码就会变得复杂而深奥,如果你能确定代码将所有事物和行为都只表述一次,惟一一次,这正是优秀设计的根本。


使软件更易被理解:

(1)任何程序员,都会书写大量的代码,不可能所有代码的实现都记得一清二楚,所以重构可以帮助我们更好地反映出我的理解,然后重新执行。


助你提高编程速度:

(1)重构能够更有效地写出强固稳健的代码


助你提高编程速度

(1)重构代码并不能提高系统的运行速度,但是能提高软件的可扩展性与开发速度。


3、何时重构

(1)当重构的价值比维护代码的价值高时,就值得重构

(2)添加新功能时是重构最好的时机,如果在前进过程中把代码结构理清,就可以从中理解更多关于一开始的设计是出于什么考虑的,另外一方面就是,代码的设计无法帮助我轻松添加我所需要的特性,一旦完成重构,新特性的添加就会更快速、更流畅。

(3)修补错误时重构,由于代码的结构不好,或者原来就存在臭虫,往往出现修改代码后没有达到预想的后果,因为代码被多次重复,重构能一目了然的发现臭虫

(4)复审代码,复审代码最好一个复审者搭配一个原作者。


为什么重构有用:

程序有两面价值:【今天可以为你做什么】--对于机器而言的

【明天可以为你做什么】--对于人而言的

对于今天的工作,我了解得很充分,对于明天的工作,我了解得不够充分。但如果我纯粹只是为今天工作,明天我将完全无法工作


4、关于间接层和重构

(1)由于软件工程师对间接层如此醉心,你应该不会惊讶大多数重构都为程序引入了更多间接层。重构往往把大型对象拆成数个小型对象,把大型函数拆成数个小型函数。

但是,间接层是一柄双刃剑。每次把一个东西分成两份,你就需要多管理一个东西。如基于这个观点,你会希望尽量减少间接层

(2)间接层的价值:允许逻辑共享、分开解释【意图】和【实现】、将变化加以隔离、将条件逻辑加以编码


5、何时不该重构

(1)重构之前,代码必须起码能够在大部分情况下正常工作

(2)一个折衷办法就是:将【大块头软件】重构为【封装良好得小型组件】。然后你就可以逐一对组件做出【重构或重建】的决定

(3)你应该随时准备重构,重构是开发中不断进行的,出现新的功能时有需求的时候进行,并不能一次性设计,或过度开发而导致程序复杂而能达到重构目的,并不是为重构而重构

(4)如果项目已经非常接近最后的期限,你不应该再分心重构,因为已经没有时间了。


6、重构与设计

(1)【事先设计】可以助我节省回头工的高昂成本,但是要避免过分开发,因为如果最后发现所有这些灵活性都毫无必要,这才是最大的失败。你知道,这其中肯定有些灵活性的确派不上用场。

(2)一旦需要重构,你总有足够的信心去重构。是的,当下只管建造可运行的最简化系统,至于灵活而复杂的设计,唔,多数时候你都不会需要它。


7、重构与性能

(1)关于重构,有一个常被提出的问题:它对程序的性能将造成怎样的影响?为了让软件易于理解,你常会做出一些使程序运行变慢的修改。这是个重要的问题

(2)任何修改如果是为了提高性能,通常会使程序难以维护,因而减缓开发速度。如果最终得到的软件的确更快了,那么这点损失尚有所值,可惜通常事与愿违,因为性能改善一旦被分散到程序各角落,每次改善都只不过从【对程序行为的一个狭隘视角】出发而已。

(3)重构和性能优化从某种意义上来说是两个相反的方向,

重构--使代码优化,易于维护,但可能会牺牲一点性能

性能优化--使代码复杂,不易于维护,但可以提高运行速度

(4)如果你一视同仁地优化所有代码,90%的优化工作都是白费劲儿,因为被你优化的代码有许多难得被执行起来。你花时间做优化是为了让程序运行更快,但如果因为缺乏对程序的清楚认识而花费时间,那些时间都是被浪费掉了。

(5)和重构一样,你应该小幅度进行修改。没走一步都需要编译、测试、再次量测。如果没能提高性能,就应该撤销此次修改。

(6)短程看来,重构的确会使软件变慢,但它使优化阶段中的软件性能调整更容易。最终我还是有赚头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值