Начнем замену с переменной totalAmount в методе Customer.charge:
class Customer...
public String statement() {
int frequentRenterPoints = 0;
Enumeration rentals = this.rentals.elements();
String result = "Rental Record for "+getName()+"\n";
while( rentals.hasMoreElements()) {
Rental each = ( Rental) rentals.nextElement();
frequentRenterPoints += each.getFrequentRenterPoints();
// show figures for this rental
result += "\t"+each.getMovie().getTitle()+"\t"+
String.valueOf( each.getCharge())+"\n";
}
// add footer lines
result += "Amount owned is "+String.valueOf( getTotalCharge())+"\n";
result += "You earned "+String.valueOf( frequentRenterPoints)+
" frequent renter points";
return result;
}
private double getTotalCharge() {
double result = 0;
Enumeration rentals = this.rentals.elements();
while( rentals.hasMoreElements()) {
Rental each = ( Rental) rentals.nextElements();
result += each.getCharge();
}
return result;
}
Это более сложный случай рифэкторинга
Replace Temp with Query (120),
totalAmount изменяется в цикле, поэтому приходится копировать цикл в новый метод.
В начало |
предыдущая |
следующая