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