代碼重(zhong)構(gou)~提(ti)取(qu)方法
提(ti)取(qu)方法(fa) (Extract Method) — 意思是將(jiang)大段代碼(ma)中(zhong)的(de)一(yi)部分提(ti)取(qu)后,構成一(yi)個(ge)新方法(fa);還有一(yi)個(ge)含(han)義是將(jiang)多個(ge)方法(fa)中(zhong)公用的(de)部分提(ti)供出來,形式一(yi)個(ge)新的(de)方法(fa),
這種重(zhong)構(gou)可以(yi)使整段程序的結構(gou)變得更清晰,增加可讀性(xing),擴展性(xing)和可維(wei)護性(xing)。
如,有兩個方法(fa),它們的實現部分很雷同(tong),看代碼:
1 public string ChooseItem1() 2 { 3 return SelectItem(1); 4 } 5 6 public string ChooseItem2() 7 { 8 return SelectItem(2); 9 }
而事實上,chooseitem1與chooseitem2的方法體基本一(yi)(yi)至,只是為(wei)selectitem方法傳參時,一(yi)(yi)個(ge)是傳1,另一(yi)(yi)個(ge)是傳2,而我們(men)稍微對程序進行修改,它(ta)的表現(xian)
將會完(wan)全兩樣(yang),看代碼:
1 private string ChooseItem(int value) 2 { 3 return SelectItem(value); 4 } 5 6 public string ChooseItem1() 7 { 8 return ChooseItem(1); 9 } 10 11 public string ChooseItem2() 12 { 13 return ChooseItem(2); 14 }
OK,感覺我們優化的代(dai)(dai)(dai)碼比原來的代(dai)(dai)(dai)碼多了(le),顯得更麻煩了(le),其(qi)實則不(bu)然(ran),這(zhe)個代(dai)(dai)(dai)碼是將可能發(fa)變的,公(gong)共的代(dai)(dai)(dai)碼片斷(duan)進行封(feng)裝,然(ran)后再由別外方法去調用,這(zhe)樣(yang)
如(ru)果我們(men)希望修改(gai)功能,只需要(yao)修改(gai)ChooseItem這(zhe)個(ge)(ge)核心方法即可,而不需要(yao)一(yi)個(ge)(ge)一(yi)個(ge)(ge)的(de)去拷貝代碼。