日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重构手法(一)之重新组织函数

發(fā)布時間:2025/3/21 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重构手法(一)之重新组织函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、Extract Method(提煉函數(shù))

重構前:

void printOwing(double amount){printBanner();//print details System.out.println("name:" + _name);System.out.println("amount" + amount); }

重構后:

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ù))

重構前:

int getRating(){return (moreThanFiveLateDeliveries()) ? 2 : 1; }boolean moreThanFiveLateDeliveries(){return _numberOfLateDeliveries > 5; }

重構后

int getRating(){return (_numberOfLateDeliveries > 5) ? 2 : 1; }

3、Inline Temp(內(nèi)聯(lián)臨時變量)

重構前:

double basePrice = anOrder.basePrice(); return (basePrice > 1000);

重構后:

return (anOrder.basePrice() > 1000);

4、Replace Temp with Query(以查詢?nèi)〈R時變量)

重構前:

double basePrice = _quantity * _itemPrice; if(basePrice > 1000)return basePrice * 0.95; elsereturn basePrice * 0.98;

重構后:

if(basePrice() > 1000)return basePrice() * 0.95; elsereturn basePrice() * 0.98;double basePrice(){return _quantity * _itemPrice; }

5、Introduce Explaining Variable(引入解釋性變量)

重構前:

if((platform.toUpperCase().indexOf("MAC") > -1) &&(browser.toUpperCase().indexOf("IE") > -1) &&wasInitialized() && resize > 0) {//do something }

重構后:

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(分解臨時變量)

重構前:

double temp = 2 * (_height + _width); System.out.println(temp); temp = _height * _width; System.out.println(temp);

重構后:

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ù)的賦值)

重構前:

int discount(int inputVal, int quantity, int yearToDate){if(inputVal > 50)inputVal -= 2; }

重構后:

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(替換算法)

重構前:

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 ""; }

重構后:

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。