范例(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("********************************");
}