代码的坏味道之十四 :Temporary Field(令人迷惑的暂时值域)
2013-05-03 09:02
621 查看
有时你会看到这样的对象:其内某个instance变量仅为某种特定情势而设。这样的代码让人不易理解,因为你通常认为对象在所有时候都需要它的所有变量。在变量未被使用的情况下猜测当初其设置目的,会让你发疯。
请使用 Extract Class(提炼类) 给这个可怜的孤儿创造一个家,然后把所有和这个变 量相关的代码都放进这个新家。也许你还可以使用 Introduce Null Object(引入Null 对象) 在「变量不合法』的情况下创建一个Null对象,从而避免写出『条件式代码」。
如果class中有一个复杂算法,需要好几个变量,往往就可能导致坏味道Temporary Field的出现。由于实现者不希望传递一长串参数(想想为什么),所以他把这些 参数都放进值域(field)中。但是这些值域只在使用该算法时才有效,其他情况下只会让人迷惑。这时候你可以利用 Extract Class 把这些变量和其相关函数提炼到一个独立class中。提炼后的新对象将是一个method object[Beck](译注:其存在只是为了提供调用函数的途径,class本身并无抽象意味)。
请使用 Extract Class(提炼类) 给这个可怜的孤儿创造一个家,然后把所有和这个变 量相关的代码都放进这个新家。也许你还可以使用 Introduce Null Object(引入Null 对象) 在「变量不合法』的情况下创建一个Null对象,从而避免写出『条件式代码」。
如果class中有一个复杂算法,需要好几个变量,往往就可能导致坏味道Temporary Field的出现。由于实现者不希望传递一长串参数(想想为什么),所以他把这些 参数都放进值域(field)中。但是这些值域只在使用该算法时才有效,其他情况下只会让人迷惑。这时候你可以利用 Extract Class 把这些变量和其相关函数提炼到一个独立class中。提炼后的新对象将是一个method object[Beck](译注:其存在只是为了提供调用函数的途径,class本身并无抽象意味)。
相关文章推荐
- 代码坏的味道14:令人迷惑的临时字段(Temporary Field)
- 代码坏味道之令人迷惑的暂时字段
- 3.14 temporary field (令人迷惑的暂时字段)
- 重构学习笔记之代码的坏味道
- 代码坏的味道09:基本类型偏执(Primitive Obsession)
- 《重构》读书笔记——代码的坏味道(重复代码)
- 代码的坏味道及解决方案
- HDU 1426 Sudoku Killer (解数独) 一个令人呕吐的 代码
- 重构代码坏味道(优雅,little code)<上>
- 改善代码的坏味道,很苦的一段代码
- JS和jquery的几个令人迷惑的问题之二(语句和对象)
- JS和jquery的几个令人迷惑的问题之四-函数
- 【重构之法】代码的坏味道
- 21种代码的“坏味道”
- 重构 第三章 代码的坏味道
- 代码的坏味道之十三 :Speculative Generality(夸夸其谈未来性)
- 关于重构,代码的坏味道,应该重构的代码
- 代码坏味道与重构
- x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()
- 代码坏味道特征重复的代码