重新组织函数

提炼函数(extract method)

内联函数(inline method)

内联临时变量(inline temp)

以查询取代临时变量(replace temp with query)

引入解释性变量(introduce explaining variable)

分解临时变量(split temporary variable)

移除对参数的赋值(remove assignments to parameters)

以函数对象取代函数(replace method with method object)

替换算法(substitute algorithm)

时间: 2024-10-11 06:09:10

重新组织函数的相关文章

代码重构之重新组织函数

重新组织函数 一.提炼函数(Extract Method) 你有一段代码可以被组织在一起并独立出来,将这段代码放入一个独立的函数中,并让函数名称解释该函数的用途(以他做什么来命名). public void printOwing(){ int em=88; int outstanding=9999; //计算outstanding do { em--; outstanding+=em; } while (em==0); //pirnt outstanding System.out.println

重新组织函数--《重构》阅读笔记

1)寻找引用点时,最好使用工具,然后再人工review.在看到这个问题的时候,我估计应该是很久之前了.现在用IDE.这个要方便很多. 2)重新组织函数的方法和目标. 其实目标很简单.就是消灭长函数. 常用方法 Extract method Inline Method Replace Temp with Query Temporary Variable Replace Method with Method Object Remove Assignments to Parameters Substi

重构摘要6_重新组织函数

Extract Method 提炼函数 过长的函数或者一段需要注释才能理解的代码,就将这段代码放进一个独立的函数中. 函数粒度小,复用机会变大,覆写容易. 高层函数如一系列注释 关键看函数名称和函数本体之间的语义距离. 变清晰,做什么来命名 Inline Method 内联函数 有时可内联到一个大函数后,再从中提炼出组织合理的小型函数. Inline Temp 内联临时变量 return (order.basePrice>0); //可定义final确定是否被赋值一次 Replace Temp

重构摘要6_又一次组织函数

Extract Method 提炼函数 过长的函数或者一段须要凝视才干理解的代码,就将这段代码放进一个独立的函数中. 函数粒度小,复用机会变大,覆写easy. 高层函数如一系列凝视 关键看函数名称和函数本体之间的语义距离. 变清晰,做什么来命名 Inline Method 内联函数 有时可内联到一个大函数后,再从中提炼出组织合理的小型函数. Inline Temp 内联暂时变量 return (order.basePrice>0); //可定义final确定是否被赋值一次 Replace Tem

重构改善既有代码的设计--第6章--重新组织函数

第6章 重新组织函数 6.1 Extract Method Long methods,因为包含太多信息和逻辑,不容易处理和修改.所以需要进行Extract Method. (1)场景 当一个函数过长,或者一段代码需要注释才能看懂,就可以考虑将其放入独立函数中. (2)优点 每个函数粒度小,被复用的几率大,被修改的难度也会低一些:高层函数逻辑分明. (3)做法 以"做什么"命名,而不是"怎么做".比如,printDetail(). 将源函数中的某一段提取到目标函数中.

第2章 重新组织函数(2):内联函数和内联临时变量

2. 内联函数(Inline Method) 2.1 动机 (1)在函数调用点插入函数本体,然后移除该函数. (2)有时遇到某些函数,其内部代码和函数名称同样清晰易读,采用内联函数可以提供代码的执行速度(因为少掉了函数调用的开销) (3)在Replace Method withd Method Object之前,将一些组织不合理的函数内联到一个大型函数,再从中提炼组织合理的小型函数时效果很好. (4)使用太多的间接层时,特别是一部分函数只是对另一个函数的简单委托时,可同去掉一些无用的间接层. 2

重新组织函数----Extra Method(提炼函数)

你有一段代码可以被组织在一起并独立出来 讲这段代码放在一个独立函数中,并让函数名称解释该函数的用途 范例:无局部变量 void printOwing(double amount){ printBanner(); //printDetail System.out.println("name:"+_name); System.out.println("amount:"+amount); } 重构后代码: void printOwint(double amount){ p

第2章 重新组织函数(3):引入解释性变量、分解临时变量和移除对参数的赋值

5. 引入解释性变量(Introduct Explaining Variable) //引入解释性变量 //重构前 if((platform.toUpperCase().indexOf("MAC") > -1) && (browser.toUpperCase().indexOf("IE") > -1) && wasInitialized() && resize > 0) { //do somethin

extract method(重新组织函数)

最常用的重构手法之一,当我们需要一段注释才能看明白一个函数,或者一个函数过长时,就需要将这段代码放到一个新的函数中去. 做法: 构造一个以函数意图命名的方法 讲需要提炼的代码复制到这个函数中 检查提炼的代码是否引用了作用于限于原函数的field或者method,如果有,将其声明为临时变量. 检查被提炼的代码是否修改了局部变量,如有则可以将被提炼代码处理为一个查询,或者使用split temporary value或者replace temp with query处理,并将这些局部变量传给目标函数

第2章 重新组织函数(4):函数对象、替换算法

8. 以函数对象取代函数(Replace Method with Method Object) 8.1 动机 (1)将一个大型的函数放进一个单独对象中,使局部变量变成对象内的字段,然后可以在同一个对象中将这个大型函数分解为多个小型函数. (2)局部变量的存在会增加函数分解的难度.如果局部变量太多,可以难以使用Replace Temp with Query来处理,这时可以用函数对象来取代 8.2 做法 (1)建立一个新类,根据待处理函数的用途,为这个类命名. (2)在新类中建一个const字段,用