重构——在不改变软件可观察行为的前提下,改善其内部结构。
1. 如果发现你需要为程序添加一个特性,而代码结构使你无法很方便的达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。
2. 测试是很重要的一部分,我们应试着让测试结果可以进行自我检验,这样我们可以节约大量的时间,大大提高开发速度。
3. 代码块愈小,代码的功能就愈容易管理,代码的处理和移动也就愈轻松,希望你每次看到长长的代码块都有将其大卸八块的冲动。
4.将长代码段分离的步骤
(1) 找出代码的逻辑泥团然后提取其中的主要逻辑。
(2) 将多余的逻辑提取为单独的函数。
(3) 确定新函数相关的变量、返回值等与值相关的部分。
(4) 修改变量、函数等名称,正确表达各部分的功能及意义。
5. 变量名称是代码清晰的关键。
6. 重构的目的是使软件更容易被理解与被修改,而不是单纯提高软件的运行效率。
7. 事不过三,三则重构。
我一晚上用了将近三个小时的时间看完了前两章,前两章第一章讲的是一个作者亲手重构的案例,浅显易懂,第二章是重构先关的一些定义。其实重构做的事情并没有多么高深,反而是那些初学编程的人也会学到的事情,简单来说就是要将代码写的更易理解,其中作者用到的手法也大多是学习编程时就会学习到的一些概念或者说特性,包括尽量去除多余的临时变量(冗余代码)、对函数方法尽量私有化(程序的封装性)、灵活使用设计模式等等,这些大多数学习编程的人都接触过,但总会因为一些个人或环境元素而会忽略某些。而重构就是一种最好的帮我们弥补或者说改善以前没遵守的编程规则的最好方式。按照我的理解,预先设计一套完美的方案在写代码有时是不如先按需求写出代码再通过不断地重构对其优化改善的。一方面是因为像我这种资历浅架构能力不足的初级编程者很难做出一个较为完善的设计方案,另一方面也是因为即使一位资深的程序员在面对最初始的需求做出了一份足够完美的方案,后期也可能因为需求的不断变化导致最初的设计不在恰当,因此只有不断随着代码的变化也不停的对其重构优化才能保持代码的生命力。
其实这本书的前两章讲的还是一些很基础的知识,大多数时间还是用在了理解第一章中的那个案例的代码上,但是看完之后也能使人对重构理解的更为清晰,大师的作品也正应该是由浅入深的,明晚再继续看希望能踩住一个巨人的脚印。