重构实践

来源:互联网 发布:乳晕 冰点脱毛 知乎 编辑:程序博客网 时间:2024/06/08 17:20
零    阅读《重构:改善既有代码的设计》笔记
一   重构是什么?
重构就是改代码,用更整洁、更清晰、更易读、更结构化的代码呈现程序。因为是第一次做项目,加上进度要求,上线的项目代码质量实在不敢恭维,一两个月后看自己写的代码,简直不能入目。这种现象应该属于常态,所以才有了重构的出现。
在阅读自己代码的过程中,经常看见(1)不必要的临时变量,(2)大段的重复代码,(3)又长又臭的长函数,(4)模糊不清的变量名和函数名,(5)缺少注释等等所谓的Bad Smell,不自觉的就想去修改它们。怎样修改这些代码才能提高它们的质量?阅读《重构》一书带给我很大帮助。
二、重构技术之重新组织函数
重新组织函数是最基本最简单的重构技术,是在函数层面处理既有代码。其技巧列举如下:
1、Extract Method(提炼函数)
-你有一段代码可以被组织在一起并独立出来。

-将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途。

note:将重复代码或可重用的代码提取出来,并用函数名做功能性说明,正是“函数”“功能”一词(function)的本意。

2、Inline Method(内联函数)
-一个函数的本体与名称同样清楚易懂。

-在函数调用点插入函数本体,然后移除该函数。

note:对于简介的、耦合性强的代码段,内联使代码可读性更好。

3、Inline Temp(内联临时变量)
-你有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法。

-将所有对该变量的引用动作,替换为对它赋值的那个表达式本身。

note:减少不必要的开销,使代码更清晰易读。

4、Replace Temp with Query(以查询取代临时变量)
-你的程序以一个临时变量保存某一表的是的运算结构。

-将这个表达式提炼到一个独立函数中。将这个临时变量的所有引用点替换为对新函数的调用。此后,新函数就可被其他函数使用。

note:将变量用函数值替换,并用函数名做说明性解释,且可复用。

5、Introduce Explaining Variable(引入解释性变量)
-你有一个复杂的表达式。

-将该复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式的用途。

note:增加可读性。

6、Split Temporary Variable(分解临时变量)
-你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。

-针对每次赋值,创造一个独立、对应的临时变量。

note:单一职责。

7、Remove Assignments to Rarameters(移除对参数的赋值)
-代码对一个参数进行赋值。

-以一个临时变量取代该参数的位置。

note:在函数内部,对const变量而言,应将参数值赋给临时变量。

8、Replace Method with Method Object(以函数对象取代函数)
-你有一个大型函数,其中对局部变量的使用使你无法采用Extract Method。

-将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。然后你可以在同一个对象中将这个大型函数分解为多个小型函数。

note:分解长函数,使函数功能清晰。

9、Substitute Algorithm(替换算法)
-你想要把某个算法替换为另一个更清晰的算法。

-将函数本体替换为另一个算法。

note:考虑效率、易读性。

三、小结

本篇随笔只涉及重构最基础的技巧,在编写代码的时候多从这些小处着手,多考虑细节。

0 0
原创粉丝点击