posts - 297,  comments - 1618,  trackbacks - 0
 

       在书写代码时,有一些不好的习惯,形象点说,可以说成代码的“坏味道”,以下是一些常见的代码的坏味道:

1.       Duplicated Code(重复的代码)

常见情况:

1) 同一个类中class内的两个函数含有相同表达式;

2) 两个互为兄弟的子类内含有相同表达式;

3) 两个毫不相关的类中出现重复的代码。

对于第1种情况,使用Extract Method重构规则提炼重复代码,让这两个地点都调用提炼出的那段代码。

       对于第2种情况,首先使用Extract Method重构规则提炼重复代码,接着将提炼出来的代码使用Pull Up Method这条重构规则将其提取到超类中。

       对于第3种情况,常常使用Extract Class重构规则将代码提取到一个独立的类中。

2.       Long Method(过长的函数)

99%的场合,要把函数变小,只需使用Extract Method重构规则。找到函数中适合集在一起的部分,将它们提炼出来形成一个新函数。

3.       Large Class(过大类)

可以使用Extract ClassExtract Subclass两条重构规则将一个过大的类变成多个小的类。

4.       Long Parameter List(过长参数列)

如果“向既有对象发出一个请求”就可以取得原本位于参数列上的一份数据,那么可以通过Replace Parameter with Method重构规则来解决这个问题。还可以使用Rreserve Whole Object重构规则将来自同一对象的一堆数据手机起来,并以该对象替换它们。如果某些对象缺乏合理的对象归属,可使用Introduce Parameter Object重构规则为它们制造出一个“参数对象”。

5.       Middle Man(中间转手人)

人们可能过度运用delegation。你也许会看到某个类接口有一半的函数都委托给其他class,这样就是过度运用,可以使用Remove Middle Man这条重构规则之间和实责对象打交道。如果转手人还有其他行为,可以运用Replace Delegation with Inheritance这条重构规则,将它变成实责对象的子类,这样你既可以扩展原对象的行为,又不必负担那么多的委托工作。

6.       Incomplete Library Class(不完美的程序库类)

如果只想修改library classes内的一两个函数,可以使用Introduce Foreign Method重构规则;如果想要添加一大堆额外行为,就得使用Introduce Local Extension重构规则。

7.       Refused Bequest(被拒绝的馈赠)

子类应该继承超类的函数和数据,如果它们不想或不需要继承,这就意味着继承体系设计有误,此时可以使用Replace Inheritance with Delegation重构规则。

8.       Comments(过多的注释)

如果你需要注释来解释一段代码做了什么,试试使用Extract Method重构规则;如果方法已经被提取出来,但还是需要注释来解释其行为,试试Rename Method重构规则;如果你需要注释说明某些系统的需求规则,试试Intrduct Assertion重构规则。

参考:
      《重构——改善既有代码的设计》
posted on 2008-06-22 13:56 阿蜜果 阅读(2361) 评论(1)  编辑  收藏 所属分类: Java


FeedBack:
# re: 《重构》学习笔记(一)——代码的坏味道
2009-03-28 20:57 | 齐晓亚
同城拜师,希望不吝赐教  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

      生活将我们磨圆,是为了让我们滚得更远——“圆”来如此。
      我的作品:
      玩转Axure RP  (2015年12月出版)
      

      Power Designer系统分析与建模实战  (2015年7月出版)
      
     Struts2+Hibernate3+Spring2   (2010年5月出版)
     

留言簿(262)

随笔分类

随笔档案

文章分类

相册

关注blog

积分与排名

  • 积分 - 2285135
  • 排名 - 3

最新评论

阅读排行榜

评论排行榜