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