После извлечения метода, компиляции и запуска тестов, переносим метод в Rental и снова запускаем компиляцию и тесты. Рифэкторинг лучше всего делать небольшими шагами. Так меньше шансов сделать что-то неправильно.
class Customer...
public String statement() {
double totalAmount = 0;
int frequentRenterPoints = 0;
Enumeration rentals = this.rentals.elements();
String result = "Rental Record for "+getName()+"\n";
while( rentals.hasMoreElements()) {
double thisAmount = 0;
Rental each = ( Rental) rentals.nextElement();
frequentRenterPoints += each.getFrequentRenterPoints();
// show figures for this rental
result += "\t"+each.getMovie().getTitle()+"\t"+
String.valueOf( each.getCharge())+"\n";
totalAmount += each.getCharge();
}
// add footer lines
result += "Amount owned is "+String.valueOf( totalAmount)+"\n";
result += "You earned "+String.valueOf( frequentRenterPoints)+
" frequent renter points";
return result;
}
class Rental...
int getFrequentRenterPoints() {
if( getMovie().getPriceCode()==Movie.NEW_RELEASE && getDaysRented()>1)
return 2;
else
return 1;
}
В начало | предыдущая | следующая