diff --git a/notes/重构.md b/notes/重构.md
index 772db892..0e697888 100644
--- a/notes/重构.md
+++ b/notes/重构.md
@@ -13,7 +13,7 @@
* [1. Duplicated Code(重复代码)](#1-duplicated-code重复代码)
* [2. Long Method(过长函数)](#2-long-method过长函数)
* [3. Large Class(过大的类)](#3-large-class过大的类)
- * [4. Long Parameter List(过长的参数列)](#4-long-parameter-list过长的参数列)
+ * [4. Long Parameter List(过长的参数列表)](#4-long-parameter-list过长的参数列表)
* [5. Divergent Change(发散式变化)](#5-divergent-change发散式变化)
* [6. Shotgun Surgery(散弹式修改)](#6-shotgun-surgery散弹式修改)
* [7. Feature Envy(依恋情结)](#7-feature-envy依恋情结)
@@ -170,9 +170,9 @@ double getTotalCharge() {
重构后整体的类图和时序图如下:
-
+
-
+
# 重构原则
@@ -232,6 +232,10 @@ double getTotalCharge() {
# 代码的坏味道
+本章主要介绍一些不好的代码,也就是说这些代码应该被重构。
+
+文中提到的具体重构原则可以先忽略。
+
## 1. Duplicated Code(重复代码)
同一个类的两个函数有相同表达式,则用 Extract Method 提取出重复代码;
@@ -244,21 +248,25 @@ double getTotalCharge() {
## 2. Long Method(过长函数)
-间接层的价值:解释能力、共享能力、选择能力;
+函数应该尽可能小,因为小函数具有解释能力、共享能力、选择能力。
-分解函数的原则:当需要用注释来说明一段代码时,就需要把这部分代码写入一个独立的函数中。
+分解长函数的原则:当需要用注释来说明一段代码时,就需要把这部分代码写入一个独立的函数中。
Extract Method 会把很多参数和临时变量都当做参数,可以用 Replace Temp with Query 消除临时变量,Introduce Parameter Object 和 Preserve Whole Object 可以将过长的参数列变得更简洁。
-条件和循环往往也需要提取到新的函数中。
+条件和循环语句往往也需要提取到新的函数中。
## 3. Large Class(过大的类)
-过大的类做了过多事情,需要使用 Extract Class 或 Extract Subclass。
+应该尽可能让一个类只做一件事,而过大的类做了过多事情,需要使用 Extract Class 或 Extract Subclass。
-先确定客户端如何使用它们,然后运用 Extract Interface 为每一种使用方式提取出一个接口。
+先确定客户端如何使用该类,然后运用 Extract Interface 为每一种使用方式提取出一个接口。
-## 4. Long Parameter List(过长的参数列)
+## 4. Long Parameter List(过长的参数列表)
+
+太长的参数列表往往会造成前后不一致,不易使用。
+
+面向对象程序中,函数所需要的数据通常内在宿主类中找到。
## 5. Divergent Change(发散式变化)
diff --git a/pics/2c8a7a87-1bf1-4d66-9ba9-225a1add0a51.png b/pics/2c8a7a87-1bf1-4d66-9ba9-225a1add0a51.png
new file mode 100644
index 00000000..1659fdae
Binary files /dev/null and b/pics/2c8a7a87-1bf1-4d66-9ba9-225a1add0a51.png differ
diff --git a/pics/9d549816-60b7-4899-9877-23b01503ab13.png b/pics/9d549816-60b7-4899-9877-23b01503ab13.png
new file mode 100644
index 00000000..9c4e04cc
Binary files /dev/null and b/pics/9d549816-60b7-4899-9877-23b01503ab13.png differ