Skip to content

Commit cadf3c4

Browse files
committed
auto commit
1 parent c9fd81f commit cadf3c4

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

notes/重构.md

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
* [21. Refused Bequest(被拒绝的馈赠)](#21-refused-bequest被拒绝的馈赠)
3434
* [22. Comments(过多的注释)](#22-comments过多的注释)
3535
* [构筑测试体系](#构筑测试体系)
36-
* [重构列表](#重构列表)
3736
* [重新组织函数](#重新组织函数)
3837
* [1. Extract Method(提炼函数)](#1-extract-method提炼函数)
3938
* [2. Inline Method(内联函数)](#2-inline-method内联函数)
@@ -270,32 +269,36 @@ Extract Method 会把很多参数和临时变量都当做参数,可以用 Repl
270269

271270
## 5. Divergent Change(发散式变化)
272271

273-
一个类受到多种变化的影响;
272+
设计原则:一个类应该只有一个引起改变的原因。也就是说,针对某一外界变化所有相应的修改,都只应该发生在单一类中。
274273

275274
针对某种原因的变化,使用 Extract Class 将它提炼到一个类中。
276275

277276
## 6. Shotgun Surgery(散弹式修改)
278277

279278
一个变化引起多个类修改;
280279

281-
使用 Move MethodMove Field 把所有需要修改地代码放到同一个类中
280+
使用 Move MethodMove Field 把所有需要修改的代码放到同一个类中
282281

283282
## 7. Feature Envy(依恋情结)
284283

285-
一个函数对某个类的兴趣高于对自己所处类的兴趣,通常是过多访问其它类的数据
284+
一个函数对某个类的兴趣高于对自己所处类的兴趣,通常是过多访问其它类的数据
286285

287286
使用 Move Method 将它移到该去的地方,如果对多个类都有 Feature Envy,先用 Extract Method 提取出多个函数。
288287

289288
## 8. Data Clumps(数据泥团)
290289

291-
有些数据经常一起出现,比如两个类具有相同的字段、许多函数有相同的参数。使用 Extract Class 将它们放在一起。
290+
有些数据经常一起出现,比如两个类具有相同的字段、许多函数有相同的参数,这些绑定在一起出现的数据应该拥有属于它们自己的对象。
291+
292+
使用 Extract Class 将它们放在一起。
292293

293294
## 9. Primitive Obsession(基本类型偏执)
294295

295296
使用类往往比使用基本类型更好,使用 Replace Data Value with Object 将数据值替换为对象。
296297

297298
## 10. Switch Statementsswitch 惊悚现身)
298299

300+
具体参见第一章的案例。
301+
299302
## 11. Parallel Inheritance Hierarchies(平行继承体系)
300303

301304
每当为某个类增加一个子类,必须也为另一个类相应增加一个子类。
@@ -332,19 +335,23 @@ Extract Method 会把很多参数和临时变量都当做参数,可以用 Repl
332335

333336
## 18. Alernative Classes with Different Interfaces(异曲同工的类)
334337

338+
两个函数做同一件事,却有着不同的签名。
339+
340+
使用 Rename Method 根据它们的用途重新命名。
341+
335342
## 19. Incomplete Library Class(不完美的类库)
336343

337344
类库的设计者不可能设计出完美的类库,当我们需要对类库进行一些修改时,可以使用以下两种方法:如果只是修改一两个函数,使用 Introduce Foreign Method;如果要添加一大堆额外行为,使用 Introduce Local Extension
338345

339346
## 20. Data Class(幼稚的数据类)
340347

341-
它只拥有一些数据字段。
348+
它只拥有一些数据字段,以及用于访问这些字段的函数,除此之外一无长物
342349

343350
找出字段使用的地方,然后把相应的操作移到 Data Class 中。
344351

345352
## 21. Refused Bequest(被拒绝的馈赠)
346353

347-
子类继承超类的所有函数和数据,但是它只想要一部分
354+
子类不想继承超类的所有函数和数据
348355

349356
为子类新建一个兄弟类,不需要的函数或数据使用 Push Down MethodPush Down Field 下推给那个兄弟。
350357

@@ -356,13 +363,13 @@ Extract Method 会把很多参数和临时变量都当做参数,可以用 Repl
356363

357364
Java 可以使用 Junit 进行单元测试。
358365

359-
单元测试的对象是类的方法,而功能测以客户的角度保证软件正常运行
366+
测试应该能够完全自动化,并能检查测试的结果。Junit 可以做到
360367

361-
应当集中测试可能出错的边界条件
368+
小步修改,频繁测试
362369

363-
# 重构列表
370+
单元测试的对象是类的方法,而功能测是以客户的角度保证软件正常运行。
364371

365-
小步前进,频繁测试
372+
应当集中测试可能出错的边界条件
366373

367374
# 重新组织函数
368375

0 commit comments

Comments
 (0)