ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

范例(Examples):有局部变量(Using Local Variables)

是的,就在局部变量,包括传进源函数的参数和源函数所声明的临时变量。局部变量的作用域仅限于源函数,所以当我使用Extract Method(110)时,必须花费额外工夫去处理这些变量.某些时候它们甚至可能妨碍我,使我根本无法进行这项重构.

局部变量最简单的情况是:被提炼码只是读取这些变量的值,并不修改它们.这种情况下我可以简单地将它们当作参数传给目标函数.所以如果我面对下列函数:
void printOwing() {
    Enumeration e = _orders.elements();
    double outstanding = 0.0;

    printBanner();

    // calculate outstanding
    while(e.hasMoreElements()) {
       Order each = (Order) e.nextElement();
       outstanding += each.getAmount();
    }

    //print details
   
System.out.println("name:" + _name);
   
System.out.println("amount" + outstanding);
}

我就可以将[打印详细信息]这一部分提炼为[带一个参数的函数]:

void printOwing() {
    Enumeration e = _orders.elements();
    double outstanding = 0.0;

    printBanner();


    // calculate outstanding
    while(e.hasMoreElements()) {
       Order each = (Order) e.nextElement();
       outstanding += each.getAmount();
    }
   printDetails(outstanding);
}

void printDetails(double outstanding) {
    System.out.println("name:" + _name);
   
System.out.println("amount" + outstanding);
}

必要的话,你可以用这种手法处理多个局部变量.

posted on 2005-08-24 15:13 ivaneeo 阅读(213) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

只有注册用户登录后才能发表评论。


网站导航: