auto commit

This commit is contained in:
CyC2018 2018-03-04 15:18:49 +08:00
parent 1634228ad3
commit c9fd81f261
3 changed files with 17 additions and 9 deletions

View File

@ -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() {
重构后整体的类图和时序图如下:
<br><div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//4440ad24-625b-489a-96c1-e5ab1b06a30f.png"/> </div><br>
<br><div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//9d549816-60b7-4899-9877-23b01503ab13.png"/> </div><br>
<br><div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//8c139711-3500-4f71-8456-c1adaf429ad0.png"/> </div><br>
<br><div align="center"> <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics//2c8a7a87-1bf1-4d66-9ba9-225a1add0a51.png"/> </div><br>
# 重构原则
@ -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发散式变化

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB