有时你会看到这样的对象:其内某个instance变量仅为某种特定情势而设。这样的代码让人不易理解,因为你通常认为对象在所有时候都需要它的所有变量。在变量未被使用的情况下猜测当初其设置目的,会让你发疯。
请使用 Extract Class(提炼类) 给这个可怜的孤儿创造一个家,然后把所有和这个变 量相关的代码都放进这个新家。也许你还可以使用 Introduce Null Object(引入Null 对象) 在「变量不合法』的情况下创建一个Null对象,从而避免写出『条件式代码」。
如果class中有一个复杂算法,需要好几个变量,往往就可能导致坏味道Temporary Field的出现。由于实现者不希望传递一长串参数(想想为什么),所以他把这些 参数都放进值域(field)中。但是这些值域只在使用该算法时才有效,其他情况下只会让人迷惑。这时候你可以利用 Extract Class 把这些变量和其相关函数提炼到一个独立class中。提炼后的新对象将是一个method object[Beck](译注:其存在只是为了提供调用函数的途径,class本身并无抽象意味)。