Избавление от временных переменных

Как я уже намекал ранее, временные переменные могут стать проблемой. Они полезны только внутри своей собственной конструкции и, таким образом поощряют длинные и сложные блоки кода. Здесь мы имеем две переменные, обе используются при расчете итога по заказам каждого клиента. Обеим версииям отчета, текстовая и 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;
    }

В начало | предыдущая | следующая