随笔分类 - Refactoring
摘要: 接着昨天的继续说,废话不说,直接进入正题: 【3】Large Class(过大的类) 查看一个类是否“过大”,这里有一个小技巧分享给大家。就是看两点:1)这个类实例变量太多,必然会有Duplicated Code(重复代码) 2)类内如果有太多代码,也会产生Duplicated Code,让整个类...阅读全文
摘要: 今天,我们不介绍具体的重构手法。我们暂且缓缓,回过头来看看,总结一下,什么样的代码需要重构,什么样的代码有一股”难闻的味道“,以此来提示我们需要重构,来提示我们这段代码其实是有改进的地方的。我也很喜欢文中作者对于代码这种特质采用”坏味道“,很形象也很生动。下面进入正题: 【1】Duplicated...阅读全文
摘要: 有时候你会遇到一系列复杂的表达式连续运算的时候,这个时候你可能根本招架不住如此长或者是如此复杂的长函数。这个时候你可以通过引用临时变量来储存他们的结果,将这些长函数的结果分成一个个临时变量来让函数清晰化。但在这里,我的想法与作者的想法是一样的,我会更倾向于去用Extract Method去将复杂函...阅读全文
摘要: Replace Temp with Query,顾名思义,表示你用查询来替换临时变量本身,临时变量对于函数来说是只有当前函数可见的,如果你在同类的别的地方要用到这个变量你就必须重新写表达式来获取这个变量,这样的话你就会在不经意间让你的函数变得复杂起来,所以如果你想要使用Extract Method...阅读全文
摘要: 与Inline Method相同,有时候犹豫需要Extract Method,需要对一些临时变量进行内联,而这个往往是Replace Temp with Query的一部分。简单来说,当你看到这种double basePrice = anOrder.basePrice();return (base...阅读全文
摘要: 加入间接层确实是可以带来便利,但过多的间接层有时候会让我自己都觉得有点恐怖,有些时候,语句本身已经够清晰的同时就没必要再嵌一个函数来调用了,这样只会适得其反。比如void test(){ if (numGreaterFive()) { qDebug() 5;} 函数名称...阅读全文
摘要: 在编程中,比较忌讳的一件事情就是长函数。因为长函数代表了你这段代码不能很好的复用以及内部可能出现很多别的地方的重复代码,而且这段长函数内部的处理逻辑你也不能很好的看清楚。因此,今天重构第一个手法就是处理长函数--Extract Method,抽取成一个独立的小函数。 我个人来说也很喜欢短小函数,因...阅读全文
摘要: 作为C++的程序员,我从大学就开始不间断的看书,看到如今上班,也始终坚持每天多多少少阅读技术文章,书看的很多,但很难有一本书,能让我去反复的翻阅。但唯独『重构--改善既有代码的设计』这本书让我重复看了不下3遍,今天我重新拿起这本书开始了第四遍的阅读。 我后来仔细想了想为什么我会对这个书如此“迷恋”...阅读全文