ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
你常常可以在很多地方看到相同的三或四笔数据项:两个classes内的相同值域(field)、许多函数签名式(signature)中的相同参数。这 些[总是绑在一起出现的数据]真应该放进属于它们自己的对象中。首先请找出这些数据的值域形式(field)出现点,运用Extract Class(149)将它们提炼到一个独立对象中。然后将注意力转移到函数签名式(signature)上头,运用Introduce Parameter Object(295)或Preserve Whole Object(288)为它减肥。这么做的直接好处是可以将很多参数列缩短,简化函数调用动作。是的,不必因为Data Clumps只用上新对象的一部分值或而在意,只要你以新对象取代两个(或更多)值域,你就值回票价了。

一个好的评断办法是:删掉众多数据中的一笔。其他数据有没有因而失去意义?如果它们不再有意义,这就是个明确信号:你应该为它们产生一个新对象。

缩短值域个数和参数个数,当然可以去除一些坏味道,但更重要的是:一旦拥有新对象,你就有机会让程序散发出一种芳香。得到新对象后,你就可以着手寻找Feature Envy,这可以帮你指出[可移到新class]中的种种程序行为。不必太久,所有classes都将在它们的小小社会中充分发挥自己的生产力。
posted on 2005-08-19 10:37 ivaneeo 阅读(815) 评论(1)  编辑  收藏 所属分类: refactoring-从地狱中重生

Feedback

# re: 代码的坏味道(8)-Data Clumps(数据泥团) 2008-12-01 11:41 lujiawu12
这就是个明确信号:你应该为它们产生一个新对象

if they don't ,it's a sure sign that you have an object that's dying to be born.

dying是垂死的意思,以我的理解应是不该产生新对象  回复  更多评论
  


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


网站导航: