重构手法(一)之重新组织函数
生活随笔
收集整理的這篇文章主要介紹了
重构手法(一)之重新组织函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、Extract Method(提煉函數(shù))
重構(gòu)前:
void printOwing(double amount){printBanner();//print details System.out.println("name:" + _name);System.out.println("amount" + amount); }重構(gòu)后:
void printOwing(double amount){printBanner();printDetails(amount); }void printDetails(double amount){System.out.println("name:" + _name);System.out.println("amount" + amount); }2、Inline Method(內(nèi)聯(lián)函數(shù))
重構(gòu)前:
int getRating(){return (moreThanFiveLateDeliveries()) ? 2 : 1; }boolean moreThanFiveLateDeliveries(){return _numberOfLateDeliveries > 5; }重構(gòu)后
int getRating(){return (_numberOfLateDeliveries > 5) ? 2 : 1; }3、Inline Temp(內(nèi)聯(lián)臨時變量)
重構(gòu)前:
double basePrice = anOrder.basePrice(); return (basePrice > 1000);重構(gòu)后:
return (anOrder.basePrice() > 1000);4、Replace Temp with Query(以查詢?nèi)〈R時變量)
重構(gòu)前:
double basePrice = _quantity * _itemPrice; if(basePrice > 1000)return basePrice * 0.95; elsereturn basePrice * 0.98;重構(gòu)后:
if(basePrice() > 1000)return basePrice() * 0.95; elsereturn basePrice() * 0.98;double basePrice(){return _quantity * _itemPrice; }5、Introduce Explaining Variable(引入解釋性變量)
重構(gòu)前:
if((platform.toUpperCase().indexOf("MAC") > -1) &&(browser.toUpperCase().indexOf("IE") > -1) &&wasInitialized() && resize > 0) {//do something }重構(gòu)后:
final boolean isMacOs = platform.toUpperCase().indexOf("MAC") > -1; final boolean isIEBrowser = browser.toUpperCase().indexOf("IE) > -1; final boolean wasResized = resize > 0;if(isMacOs && isIEBrowser && wasInitialized() && wasResized){//do something }6、Split Temporary Variable(分解臨時變量)
重構(gòu)前:
double temp = 2 * (_height + _width); System.out.println(temp); temp = _height * _width; System.out.println(temp);重構(gòu)后:
final double perimeter = 2 * (_height + _width); System.out.println(perimeter); final double area = _height * _width; System.out.println(area);7、Remove Assignments to Parameters(移除對參數(shù)的賦值)
重構(gòu)前:
int discount(int inputVal, int quantity, int yearToDate){if(inputVal > 50)inputVal -= 2; }重構(gòu)后:
int discount(int inputVal, int quantity, int yearToDate){int result = inputVal;if(inputVal > 50)result -= 2; }8、Replace Method with Method Object(以函數(shù)對象取代函數(shù))
9、Substitute Algorithm(替換算法)
重構(gòu)前:
String foundPerson(String[] people){for(int i = 0; i < people.length; i++){if(people[i].equals("Don")){return "Don";} if(people[i].equals("John")){return "John";} if(people[i].equals("Kent")){return "Kent";} }return ""; }重構(gòu)后:
String foundPerson(String[] people){List candidates = Arrays.asList(new String[] {"Don", "John", "Kent"});for(int i = 0; i < people.length; i++){if(candidates.contains(people[i]))return people[i];} return ""; }?
轉(zhuǎn)載于:https://www.cnblogs.com/dongerlei/p/5162929.html
總結(jié)
以上是生活随笔為你收集整理的重构手法(一)之重新组织函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 完善tab页面定位
- 下一篇: 微信公众平台--3.普通消息交互(发送与