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(); // add frequent renter points frequentRenterPoints++; // add bonus for a two day new release rental if( each.getMovie().getPriceCode()==Movie.NEW_RELEASE && each.getDaysRented()>1) frequentRenterPoints++; // 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; }После внесения измений я снова компилирую и запускаю тесты, чтобы убедиться, что все работает.
Я предпочитаю избавляться от временных переменных насколько это возможно. Временные переменные часто вызывают проблемы, поскольку большое количество параметров передается туда сюда без особой необходимости и очень просто можно потерять идею автора, зачем они были заведены. Особенно часто они подкрадываются в длинных методах. Разумеется платой за избавление от временных переменных будет быстродействие; здесь сумма задолженности считается два раза. Однако это довольно просто оптимизировать в классе Rental и оптимизация может оказаться более эффективной, если код будет лучше организован. Я собираюсь уделить больше внимания проблеме производительности в разделе Рифэкторинг и Производительность, на странице 69.
В начало | предыдущая | следующая