auto commit
This commit is contained in:
54
notes/重构.md
54
notes/重构.md
@ -34,15 +34,15 @@
|
||||
* [22. 过多的注释](#22-过多的注释)
|
||||
* [四、构筑测试体系](#四构筑测试体系)
|
||||
* [五、重新组织函数](#五重新组织函数)
|
||||
* [1. Extract Method(提炼函数)](#1-extract-method提炼函数)
|
||||
* [2. Inline Method(内联函数)](#2-inline-method内联函数)
|
||||
* [3. Inline Temp(内联临时变量)](#3-inline-temp内联临时变量)
|
||||
* [4. Replace Temp with Query(以查询取代临时变量)](#4-replace-temp-with-query以查询取代临时变量)
|
||||
* [5. Introduce Explaining Variable(引起解释变量)](#5-introduce-explaining-variable引起解释变量)
|
||||
* [6. Split Temporary Variable(分解临时变量)](#6-split-temporary-variable分解临时变量)
|
||||
* [7. Remove Assigments to Parameters(移除对参数的赋值)](#7-remove-assigments-to-parameters移除对参数的赋值)
|
||||
* [8. Replace Method with Method Object(以函数对象取代函数)](#8-replace-method-with-method-object以函数对象取代函数)
|
||||
* [9. Subsititute Algorithn(替换算法)](#9-subsititute-algorithn替换算法)
|
||||
* [1. 提炼函数](#1-提炼函数)
|
||||
* [2. 内联函数](#2-内联函数)
|
||||
* [3. 内联临时变量](#3-内联临时变量)
|
||||
* [4. 以查询取代临时变量](#4-以查询取代临时变量)
|
||||
* [5. 引起解释变量](#5-引起解释变量)
|
||||
* [6. 分解临时变量](#6-分解临时变量)
|
||||
* [7. 移除对参数的赋值](#7-移除对参数的赋值)
|
||||
* [8. 以函数对象取代函数](#8-以函数对象取代函数)
|
||||
* [9. 替换算法](#9-替换算法)
|
||||
* [六、在对象之间搬移特性](#六在对象之间搬移特性)
|
||||
* [1. Move Method(搬移函数)](#1-move-method搬移函数)
|
||||
* [2. Move Field(搬移字段)](#2-move-field搬移字段)
|
||||
@ -417,17 +417,23 @@ Java 可以使用 Junit 进行单元测试。
|
||||
|
||||
# 五、重新组织函数
|
||||
|
||||
## 1. Extract Method(提炼函数)
|
||||
## 1. 提炼函数
|
||||
|
||||
> Extract Method
|
||||
|
||||
将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。
|
||||
|
||||
## 2. Inline Method(内联函数)
|
||||
## 2. 内联函数
|
||||
|
||||
> Inline Method
|
||||
|
||||
一个函数的本体与名称同样清楚易懂。
|
||||
|
||||
在函数调用点插入函数本体,然后移除该函数。
|
||||
|
||||
## 3. Inline Temp(内联临时变量)
|
||||
## 3. 内联临时变量
|
||||
|
||||
> Inline Temp
|
||||
|
||||
一个临时变量,只被简单表达式赋值一次,而它妨碍了其它重构手法。
|
||||
|
||||
@ -442,7 +448,9 @@ return basePrice > 1000;
|
||||
return anOrder.basePrice() > 1000;
|
||||
```
|
||||
|
||||
## 4. Replace Temp with Query(以查询取代临时变量)
|
||||
## 4. 以查询取代临时变量
|
||||
|
||||
> Replace Temp with Query
|
||||
|
||||
以临时变量保存某一表达式的运算结果,将这个表达式提炼到一个独立函数中,将所有对临时变量的引用点替换为对新函数的调用。Replace Temp with Query 往往是 Extract Method 之前必不可少的一个步骤,因为局部变量会使代码难以提炼。
|
||||
|
||||
@ -466,7 +474,9 @@ double basePrice(){
|
||||
}
|
||||
```
|
||||
|
||||
## 5. Introduce Explaining Variable(引起解释变量)
|
||||
## 5. 引起解释变量
|
||||
|
||||
> Introduce Explaining Variable
|
||||
|
||||
将复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。
|
||||
|
||||
@ -488,13 +498,17 @@ if(isMacOS && isIEBrower && wasInitialized() && wasResized) {
|
||||
}
|
||||
```
|
||||
|
||||
## 6. Split Temporary Variable(分解临时变量)
|
||||
## 6. 分解临时变量
|
||||
|
||||
> Split Temporary Variable
|
||||
|
||||
某个临时变量被赋值超过一次,它既不是循环变量,也不是用于收集计算结果。
|
||||
|
||||
针对每次赋值,创造一个独立、对应的临时变量,每个临时变量只承担一个责任。
|
||||
|
||||
## 7. Remove Assigments to Parameters(移除对参数的赋值)
|
||||
## 7. 移除对参数的赋值
|
||||
|
||||
> Remove Assigments to Parameters
|
||||
|
||||
以一个临时变量取代对该参数的赋值。
|
||||
|
||||
@ -509,13 +523,17 @@ int discount (int inputVal, int quentity, int yearToDate){
|
||||
if (inputVal > 50) result -= 2;
|
||||
```
|
||||
|
||||
## 8. Replace Method with Method Object(以函数对象取代函数)
|
||||
## 8. 以函数对象取代函数
|
||||
|
||||
> Replace Method with Method Object
|
||||
|
||||
当对一个大型函数采用 Extract Method 时,由于包含了局部变量使得很难进行该操作。
|
||||
|
||||
将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。然后可以在同一个对象中将这个大型函数分解为多个小型函数。
|
||||
|
||||
## 9. Subsititute Algorithn(替换算法)
|
||||
## 9. 替换算法
|
||||
|
||||
> Subsititute Algorithn
|
||||
|
||||
# 六、在对象之间搬移特性
|
||||
|
||||
|
Reference in New Issue
Block a user