重新组织函数
- 提炼函数
如果一个过长的函数中有一段需要注释才能让人理解用途的代码,将它提炼出来放进一个独立函数中,并以它“做什么”来对函数命名 - 内联函数
如果一个函数的本体与名称同样清楚易懂,那么在函数调用点插入函数本体,然后移除该函数 - 内联临时变量
果一个临时变量,只被一个简单表达式赋值一次,将对该变量的引用动作替换为对它赋值的表达式自身 - 以查询取代临时变量
如果程序以一个临时变量保存某一表达式的运算结果,将这个表达式提炼到一个独立函数中,将这个临时变量的所有引用点替换为对新函数的调用 - 引入解释性变量
将复杂表达式的结果放进一个临时变量,以此变量名称来解释表达式用途 - 分解临时变量
如果程序中某个临时变量被赋值超过一次,它既不是循环变量也不用于收集计算结果,针对每次赋值,创造一个独立的临时变量 - 以函数对象取代函数
将一个大型函数放进一个单独对象中,将这个大型函数分解成多个小型函数 - 替换算法
将函数本体替换为另一个算法
重新组织数据
- 自封装字段
你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙,为这个字段建立取值、设值函数,并且只以这些函数来访问字段(JavaBean封装字段思想) - 以对象取代数据值
有一个数据项,需要与其他数据和行为一起使用才有意义,将数据项变成对象 - 以对象取代数组
有一个数组,其中的元素各自代表不同的东西,以对象替换数组,数组中的元素以字段来表示 - 以字面常量取代魔法值
根据字面数值创建常量并根据意义为它命名