读《重构-改善既有代码的设计》汇总

近日受一位资深程序员大牛写的一篇学习路线建议的博客影响,开始读《重构-改善既有代码的设计》,《大话设计模式》两书。此篇博客为读《重构-改善既有代码的设计》的学习心得笔记,将在每天的 学习中,不断更新...

一、为什么要重构

重构的意义在于将眼光放长远,而不仅限于当前暂时的提高开发效率。

重构要做的就是通过对软件内部的代码结构做调整(不影响其外在的功能),使代码具有更强的可读性(由于一段时间后,自己可能会忘了自己之前写代码的逻辑,或是不久之后有其他程序员需要修改你的代码),扩展性(添加新功能,可以尽可能的不修改原有的代码,修改原有代码意味着可能会影响其他原有的功能),降低复杂性(过于冗余的代码,很容易让人看的头昏脑涨),提高编程速度(有的人可能会认为重构需要付出更多的时间代价。是的,但是这个代价个人认为是一种前人种树,后人乘凉的效果。暂时的时间代价,带来的是后面更多人的高效率开发。如果在一个大项目中,人人都能做到不断的重构代码,那项目后期的开发效率将会越来越快,越来越轻松)。更加深刻的理解代码(想要对代码进行重构,就必须非常了解代码,否则很容易引入bug);

二、重构之前,注意事项:

重构代码,一定要保证不影响其原有的功能,所以重构需要一小步一小步的进行重构,而不是大规模重构后开始测试。

三、重构列表

1.合理的变量名能够让别人见名知意

2.尽量减少临时变量的个数,过多的临时变量会是代码看起来更加复杂,难懂。也更容易在修改代码的时候,发生没有意想不到的问题。

 

四、代码的坏味道

a、重复代码

何为重复代码?既在一个以上的地方看到他,就可以成为重复代码。

第一种情况

两个地方发现相同的表达式,这是可以提炼重复代码

第二种情况

两个互为兄弟的子类含有相同的表达式,可以将相同的部分提炼出来,推入父类中。

第三种情况

如果是两个完全不相关的类,拥有重复代码,则可以将方法提炼到自独立类中,至于这个提炼的方法该属于哪儿个类,则需要做判断

b、过长代码

c、过大的类

d、过长参数列

...

五、简化条件表达式

分解条件表达式

必要时将if条件提炼出来,封装到函数中,函数作为条件(更能体现条件要表达的意思)

读《重构-改善既有代码的设计》汇总_第1张图片

合并条件表达式

有时分开的条件,写了多个if,但是要做的事情却一样,这时可以合并条件语句(逻辑或 、逻辑与、独立函数)

移除控制标记

控制标记大大降低程序的可读性。

用java提供的break、continue、return来代替。

以卫语句取代嵌套条件表达

当不同的判断执行条件,调用不同方法时(有返回值)

旧思路:用一个变量来统一接收所有方法的返回值,最后返回

新思路:直接return 方法();

使用if...else  表示这两种情况出现的概率都差不多,当某一些条件出现的概率很小的时候,可以用if... if...  if..  分开写,代码可读性会更强一些。

并且一大堆的if.. else if.. else if  else..而部分else if 出现的次数很少。这时看代码的人也会去看这段代码,会妨碍他们的理解。

 

 

 

 

 

 

 

 

你可能感兴趣的:(个人简记)