欢迎访问 生活随笔!

生活随笔

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

编程问答

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

发布时间:2025/3/21 编程问答 67 豆豆
生活随笔 收集整理的这篇文章主要介绍了 重构手法(一)之重新组织函数 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、Extract Method(提炼函数)

重构前:

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(内联函数)

重构前:

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

重构后

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

3、Inline Temp(内联临时变量)

重构前:

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

重构后:

return (anOrder.basePrice() > 1000);

4、Replace Temp with Query(以查询取代临时变量)

重构前:

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(移除对参数的赋值)

重构前:

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(以函数对象取代函数)

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

 

转载于:https://www.cnblogs.com/dongerlei/p/5162929.html

总结

以上是生活随笔为你收集整理的重构手法(一)之重新组织函数的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。