《重构》C#版实现(三)Statement的整体重构
上一篇使用了Extract Method技巧,从Statement方法中分离出了AmountFor方法,从而略微提高了Statement方法的可读性,下面我们继续跟着《重构》的脚步来进行剩余的重构。当然在继续之前,我还是会提醒你,每一步重构之后,记得运行单元测试,它是重构的基石。
一、重命名AmountFor的局部变量
首先看看我们先前抽取出来的AmountFor方法:
public string Statement(){string result = "Rental Record for " + Name + "\n";foreach (Rental rental in Rentals){ // show figures for this rentalresult += "\t" + rental.Movie.Title + "\t" + rental.Charge.ToString() + "\n";}// add footer linesresult += "Amount owed is " + TotalCharge.ToString() + "\n";result += "You earned " + TotalRenterPoints.ToString() + " frequent renter points";return result;}6.运行单元测试,如果不通过则检查、调试、修改,直到通过为止
至于很多人会质疑,抽取的TotalCharge和TotalRenterPoints会带来两次额外的Rentals遍历,以至于存在效率降低的的问题。还是参阅《重构》书中的内容吧。