范例(Examples):无局部变量(No Local Variables)
在最简单的情况下,Extract Method(110)易如反掌。请看下列函数:
void printOwing() {
Enumeration e = _orders.elements();
double outstanding = 0.0;
//print banner
System.out.println("********************************");
System.out.println("********* Customer Owes **********");
System.out.println("********************************");
// 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);
}
我们可以轻松提炼出[打印banner]的代码。我只需要剪切、粘贴、再插入一个函数调用动作就行了:
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 printBanner() {
//print banner
System.out.println("********************************");
System.out.println("********* Customer Owes **********");
System.out.println("********************************");
}