2017年9月14日

重构改善既有代码设计--重构手法 之重新组织你的函数总结

摘要: 前面讲了那么多的重构手法,估计学完后都会忘记,因此暂停下脚本,总结下,其实前面的所有重构手段,围绕一个主题:函数。即对函数的优化;为此首先一个函数里面代码很长,那么此时我们要做的就是提炼函数。 提炼函数的过程中,我们会产生新的函数,这个时候最重要的就是,是否有变量的引用,如果没有,那么这个函数很好提 阅读全文

posted @ 2017-09-14 22:58 pony1223 阅读(259) 评论(0) 推荐(0) 编辑

重构改善既有代码设计--重构手法09:Substitute Algorithm (替换算法)

摘要: 你想要把某个算法替换为另一个更清晰地算法。将函数本体替换为另一个算法。 重构: 动机:解决问题有好几种方法。算法也是如此。如果你发现做一件事可以有更清晰地方式,就应该以较清晰地方式取代复杂的方式。“重构”可以把一些复杂东西分解为较简单的小块,但有时你就必须删除整个算法,代之以简单的算法。随着对问题有 阅读全文

posted @ 2017-09-14 22:45 pony1223 阅读(453) 评论(0) 推荐(0) 编辑

重构改善既有代码设计--重构手法08:Replace Method with Method Object (以函数对象取代函数)

摘要: 你有一个大型函数,其中对局部变量的使用,使你无法釆用 Extract Method。 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域(field) 然后你可以在同一个对象中将这个大型函数分解为数个小型函数。 动机:局部变量的存在会增加函数分解的难度。如果一个函数之中局部变量泛滥,那 阅读全文

posted @ 2017-09-14 22:42 pony1223 阅读(383) 评论(0) 推荐(0) 编辑

重构改善既有代码设计--重构手法07:Remove Assignments to Parameters (移除对参数的赋值)

摘要: 代码对一个 参数赋值。以一个临时变量取代该参数的位置。 重构后: 动机:要清楚“对参数赋值”这个说法的意思。如果你把一个名为foo的对象作为参数传给某个函数,那么“对参数赋值”意味着改变foo,使它引用另外一个对象。如果你在“被传入对象”身上进行什么操作,那没什么问题。这里只针对“foo被改而指向另 阅读全文

posted @ 2017-09-14 22:36 pony1223 阅读(404) 评论(0) 推荐(0) 编辑

重构改善既有代码设计--重构手法06:Split Temporary Variable (分解临时变量)

摘要: 你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。针对每次赋值,创造一个独立、对应的临时变量 重构后: 动机:临时变量有各种不同用途,其中某些用途会很自然的导致临时变量被多次赋值。“循环变量”和“结果收集变量”就是典型的例子:循环变量会随循环的每次运行而改变; 结果收集 阅读全文

posted @ 2017-09-14 22:29 pony1223 阅读(521) 评论(0) 推荐(0) 编辑

重构改善既有代码设计--重构手法05:Introduce Explaining Variable (引入解释性变量)

摘要: 发现:你有一个复杂的表达式。 解决:将该复杂的表达式(或其中的部分)的结果放进一个临时变量,并以此变量名称来解释表达式用途。 动机:表达式有可能非常复杂而难以阅读。这种情况下,临时变量可以帮助你将表达式分解为比较容易管理的形式。 在条件逻辑中,Introduce Explaining Variabl 阅读全文

posted @ 2017-09-14 22:20 pony1223 阅读(371) 评论(0) 推荐(0) 编辑

重构改善既有代码设计--重构手法04:Replace Temp with Query (以查询取代临时变量)

摘要: 所谓的以查询取代临时变量:就是当你的程序以一个临时变量保存某一个表达式的运算效果。将这个表达式提炼到一个独立函数中。将这个临时变量的所有引用点替换为对新函数的调用。此后,新函数就可以被其他函数调用。 例子如下: 重构之后代码: 引用书中原文来说: 动机:临时变量的问题在于:它们是暂时的,而且只能在所 阅读全文

posted @ 2017-09-14 22:12 pony1223 阅读(529) 评论(0) 推荐(0) 编辑

导航