ivaneeo's blog

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

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
有时你会看到这样的对象:其内某个instance变量仅为某种特定情势而设。这样的代码让人不易理解,因为你通常认为对象在所有时候都需要它的所有变量。在变量未被使用的情况下猜测当初其设置目的,会让你发疯。

请使用Extract Class(149)给这个可怜的孤儿创造一个家,然后把所有和这个变量相关的代码都放进这个新家。也许你还可以使用Introduce Null Object(260)在[变量不合法]的情况下创建一个null对象,从而避免写出[条件式代码]。

如果class中有一个复杂算法,需要好几个变量,往往就可能导致坏味道Temporary Field的出现。由于实现者不希望传递一长串参数(想想为什么),所以他把这些参数都放进值域(fields)中。但是这些值域只在使用该算法时才有效,其他情况下只会让人迷惑。这时候你可以利用Extract Class(149)把这些变量和其相关函数提炼到一个独立class中。提炼后的新对象将时一个method object[Beck](译注:其存在只是为了提供调用函数的途径,class本身并无抽象意味)。
posted on 2005-08-19 15:24 ivaneeo 阅读(399) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

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


网站导航: