重构手法(一)之重新组织函数
生活随笔
收集整理的这篇文章主要介绍了
重构手法(一)之重新组织函数
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
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
总结
以上是生活随笔为你收集整理的重构手法(一)之重新组织函数的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 完善tab页面定位
- 下一篇: 微信公众平台--3.普通消息交互(发送与