08 2021 档案

摘要:经过前面八篇文章,五次的重构,对于这个充电宝计费项目的重构基本上已经完成。今天是这一系列的最后一篇文章,我们来讲讲如何对条件表达式进行重构,对于条件表达式的重构比较多的一种重构方式就是利用类的多态性进行重构。接下来我们就要使用该规则对PowerBank类中的GetAmount()与GetFrequentRenterPoints()函数进行重构。 阅读全文
posted @ 2021-08-31 17:30 DotNet菜园 阅读(867) 评论(2) 推荐(2)
摘要:通过“代码重构与单元测试——“提取方法”重构(三) ”至“代码重构与单元测试——使用“以查询取代临时变量”再次对Statement()方法进行重构(七) ”这几篇文章的几次重构之后,再次对充电宝计费项目的代码进行全局性的观察与分析,我们发现在Rental类中的GetAmount()与GetFrequentRenterPoints()方法中的代码对PowerBank类有较大的依赖。因为这两个方法都只用到了Rental类中的RentedTime属性,而多次用到了PowerBank中的属性或字段。通过上面的分析,我们认为将这两个方法中的代码移到PowerBank类中显得更为合理。接下来,我们继续进行这两个方法的重构——将该部分代码移动到PowerBank类中。 阅读全文
posted @ 2021-08-19 14:04 DotNet菜园 阅读(471) 评论(0) 推荐(0)
摘要:如果我们要将结果以HTML的形式进行组织的话,我们需要将Statement方法里面的代码进行复制,然后修改result变量的文本组织方式即可。这可能就是我们经常做的事情CTRL+C、CTRL+V。我想很多程序是这样来修改代码的,快速方便,使用这种方式修改代码,方法中的好多临时变量也都要被复制一份,这是完全相同的,这样就容易产生重复的代码。在这种情况下,我们需要使用“Replace Temp with Query”(已查询取代临时变量)的重构手法来取出上图所示的红框中的临时变量。 阅读全文
posted @ 2021-08-14 16:03 DotNet菜园 阅读(446) 评论(0) 推荐(3)
摘要:经过之前的重构(见文章 代码重构与单元测试——“提取方法”重构(三) 与代码重构与单元测试——对方法的参数进行重构(五) ),我们从Statement()方法中提取了两个方法。观察这两个重构后的方法我们不难看出,这两个封装出来的新方法都只需要一个参数,这个参数就是Rental类的对象。也就是这两个方法都依赖于Rental类,而对该方法所在的当前类不太依赖。之所以会这种情况,是因为这两个方法放错了地方,因为这两个方法放在Customer类中但不依赖与Customer类而依赖于Rental类,那就足以说明这两个方法应该放在Rental类中。 阅读全文
posted @ 2021-08-06 15:33 DotNet菜园 阅读(549) 评论(0) 推荐(1)