Извлечение расчета бонуса
Следующим шагом мы проделаем похожую вещь с расчетом бонуса. Правила расчета
зависят от типа фильма, хотя здесь меньше вариантов, чем при расчете
задолженности. Похоже, что стоит перенести ответственность за это в класс
Rental. Сначала применим к коду ответственному за расчет бонуса рифэкторинг
Extract Method (110).
  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;
  }
Снова смотрим на то, как используются локальные переменные. Здесь тоже
используется переменная each, которую можно передать параметром метода. Еще
одна переменная, frecuentRenterPoints.
  В начало | 
  предыдущая | 
  следующая