[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 10407] 第1章のメソッ ドの抽出と JBuilder7



  高橋(智)です。

  第1章のメソッドの抽出で、IDEを使ったらどうなるのだろう??? という話が
出ましたが、JBuilder7 Enterprise版にて amountForメソッドとして抽出して
みました。結果は以下のとおりです。

  他のIDEではどうなるのでしょうか...

--- メソッドの抽出前 ------------------------------------------
public class Customer  {
  ...
  ...

  public String statement() {
    ...
    ...
    while( rentals.hasMoreElements() ) {
      double thisAmount = 0;
      Rental each = (Rental)rentals.nextElement();

      // 一行ごとに金額を計算
      switch( each.getMovie().getPriceCode() ) {
        case Movie.REGULAR:
          thisAmount += 2;
          if( each.getDaysRented() > 2 )
            thisAmount += (each.getDaysRented() - 2) * 1.5;
          break;
        case Movie.NEW_RELEASE:
          thisAmount += each.getDaysRented() * 3;
          break;
        case Movie.CHILDRENS:
          thisAmount += 1.5;
          if( each.getDaysRented() > 3 )
            thisAmount += (each.getDaysRented() - 3) * 1.5;
          break;
      }

      ...
      ...
    }
    ...
  }
}
---------------------------------------------------------------

--- メソッドの抽出後 ------------------------------------------
public class Customer  {
  ...
  ...

  public String statement() {
    ...
    ...
    while( rentals.hasMoreElements() ) {
      double thisAmount = 0;
      Rental each = (Rental)rentals.nextElement();

      thisAmount = amountFor(thisAmount, each);

      ...
      ...
    }
    ...
  }

  private double amountFor(double thisAmount, Rental each) {
    // 一行ごとに金額を計算
    switch( each.getMovie().getPriceCode() ) {
      case Movie.REGULAR:
        thisAmount += 2;
        if( each.getDaysRented() > 2 )
          thisAmount += (each.getDaysRented() - 2) * 1.5;
        break;
      case Movie.NEW_RELEASE:
        thisAmount += each.getDaysRented() * 3;
        break;
      case Movie.CHILDRENS:
        thisAmount += 1.5;
        if( each.getDaysRented() > 3 )
          thisAmount += (each.getDaysRented() - 3) * 1.5;
        break;
    }
    return thisAmount;
  }
}
---------------------------------------------------------------

-- 
高橋智宏