Избавление от временных переменных
Как я уже намекал ранее, временные переменные могут стать проблемой. Они
полезны только внутри своей собственной конструкции и, таким образом поощряют
длинные и сложные блоки кода. Здесь мы имеем две переменные, обе используются
при расчете итога по заказам каждого клиента. Обеим версииям отчета, текстовая
и HTML, нужны эти итоги. Разумно применить рифэкторинг Replace Temp with Query
(120), чтобы заменить временные переменные totalAmount и frquentRentalPoints
на вызов метода. Замена временных переменных на вызов методов способствует
более понятному дизайну без длинных и сложных методов.
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;
}
В начало |
предыдущая |
следующая