博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读书笔记之何时重构(下)
阅读量:6719 次
发布时间:2019-06-25

本文共 1711 字,大约阅读时间需要 5 分钟。

因为中间看了一本其他的书,差不多一个月未跟新读书笔记了,这段时间要补补课,接着上一章继续说说何时重构,文章中很多重构的方法这里还没有说明,后续章节会详细的介绍这些经常使用到的重构方法,尽请期待:

11、平行继承体系(Parallel):每当你为某个类增加一个子类的时候也必须为另一个类增加一个子类。如果你发现某个继承体系的名称前缀和另一个继承体系的名称前缀完全相同的时候就是需要重构的地方了。

12、冗赘类(Lazy Class):你创建的没一个类都得有人去理解它、维护它,这些工作都是要花钱的。如果一个类的所得不值其自身价值那么它就应该消失。

13、夸夸其他未来性(Speculative Generality):如果所有装置都会被用到,那就值得做;如果用不到,就不值得。它们只会挡你的路,所以,把它搬开吧。

14、令人迷惑的暂时值域(Temporary Field):有时你会看到这样的对象:其内某个instance变量仅为某种特定情势而设。这样的代码让人不易理解,因为你通常认为对象在所有时候都需要它的所有变量。你应该提炼类,然后把所有和这个变量相关的代码都放进这个新家。

15、过度耦合的消息链(Message Chains):用户向一个对象索求(request)另一个对象,然后再向后者索求另一个对象,然后再索求另一个对象……这就是消息链(Message Chains)。实际代码中你看到的可能是一长串getThis()或一长串临时变量。采取这种方式,将会导致紧密的耦合性,一旦对象间的关系发生任何变化,客户端就不得不作出相应修改。可以使用Hide Delegate方法进行重构,后续会讲解如何使用。

16、中间转手人(Middle Man):如果一个类接口有一半的函数都委托给其他的类,这样就是过度运用委托,这个时候你应该直接移除中间类,直接和实责对象打交道。

17、狎昵关系(Inappropriate Intimacy):有时你会看到两个类过于亲密,花费太多时间去探究彼此的私有成分。你可以采用 Move MethodMove Field 帮它们划清界线,从而减少狎昵行径。你也可以看看是否运用 Change Bidirectional Association to Unidirectional 让其中一个class对另一个斩断情丝。如果两个实在是情投意合,可以运用Extract Class 把两者共同点提炼到一个安全地点,让它们坦荡地使用这个新class。或者也可以尝试运用 Hide Delegate 让另一个class来为它们传递相思情。

18、异曲同工的类(Alternative Classes with Different Interfaces):两个函数做同一件事,确有着不同的签名式,请运用重命名的方式,按照它们的用途重新命名,并反复运用移动函数的方法将某些行为移入类中,直到其协议一致。

19、不完美的程序类库(Incomplete Library Class):许多程序都建立在封装好的类库上,有些类库并不是那么完美,如果你想要修改它们可以运用Introduce Foreign Method和Introduce Local Extension。

20、数据类(Data Class):数据类中不应有Public值域,如果含有容器类值域(Collection Fields),你应该检查它们是否得到了恰当的封装,对于不该被其他类修改的值域,请取消Setting方法。

21、被拒绝的遗赠(Refused Bequest):有时候继承一个类的子类并不需要使用全部父类的方法,大部分方法甚至与子类并无任何关系这时候你需要用委托的方式来代替继承(Replace Inheritance with Delegation)。

22、过多的注释(Comments):有时候因为代码很糟糕才写了长长的注释,这个时候尝试重构代码消除长长的注释。

ITeye推荐

转载于:https://www.cnblogs.com/TCrow/archive/2012/05/21/2868254.html

你可能感兴趣的文章
C# 简介
查看>>
java 两个数交换问题
查看>>
css核心
查看>>
redhat6.0安装步骤
查看>>
央视广告招标京东成黑马 茅台是标王
查看>>
CnetOS 6.6 rsync 的服务端和客户端配置
查看>>
mysql双主同步配置
查看>>
【拾贝】版本控制-git 建立Team项目
查看>>
和为S的连续正数序列
查看>>
孩子们的游戏(圆圈中最后剩下的数)
查看>>
MySQL的AB复制
查看>>
Mysql调优:
查看>>
批量修改root密码#shell脚本
查看>>
Linux命令学习记录(四)
查看>>
Oracle日常维护操作笔记(一)
查看>>
网管必懂的几个概念
查看>>
puppet 部署
查看>>
ISCSI文件存储
查看>>
求助:关于windows飞信机器人的问题
查看>>
我的友情链接
查看>>