
重构 - 重新组织你的函数
IT_FISH629
纯正程序员一枚
展开
-
重新组织你的函数之二 :Inline Method(将函数内联化)
一个函数,其本体(method body)应该与其名称(method name)同样清楚易懂。 在函数调用点插入函数本体,然后移除该函数。 int getRating() { return (moreThanFiveLateDeliveries()) ? 2 : 1; } boolean moreThanFiveLateDeliveries() { ret转载 2013-05-03 12:11:53 · 872 阅读 · 0 评论 -
重新组织你的函数之六 :Split Temporary Variable(剖解临时变量)
你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不是一个集用临时变量(collecting temporary variable)。 针对每次赋值,创造一个独立的、对应的临时变量。 double temp = 2 * (_height + _width); System.out.println (temp); temp = _height * _w转载 2013-05-03 12:22:59 · 696 阅读 · 0 评论 -
重新组织你的函数之七 :Remove Assignments to Parameters(移除对参数的赋值动作)
你的代码对一个参数进行赋值动作。 以一个临时变量取代该参数的位置。 int discount (int inputVal, int quantity, int yearToDate) { if (inputVal > 50) inputVal -= 2; int discount (int inputVal, int quantity, int y转载 2013-05-03 12:24:35 · 878 阅读 · 0 评论 -
重新组织你的函数之八 :Replace Method with Method Object(以函数对象取代函数)
你有一个大型函数,其中对局部变量的使用,使你无法釆用 Extract Method。 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域(field) 然后你可以在同一个对象中将这个大型函数分解为数个小型函数。 class Order... double price() { double primaryBasePrice; double转载 2013-05-03 12:29:20 · 729 阅读 · 0 评论 -
重新组织你的函数之三 :Inline Temp(将临时变量内联化)
你有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构手法。 将所有对该变量的引用动作,替换为对它赋值的那个表达式本身。 double basePrice = anOrder.basePrice(); return (basePrice > 1000) return (anOrder.basePrice() > 1000) 动机(Motivation)转载 2013-05-03 12:15:17 · 774 阅读 · 0 评论 -
重新组织你的函数之四 :Replace Temp with Query(以查询取代临时变量)
你的程序以一个临时变量(temp)保存某一表达式的运算结果。 将这个表达式提炼到一个独立函数(译注:所谓查询式,query)中。将这个临时变量的所有「被引用点」替换为「对新函数的调用」。新函数可被其他函数使用。 double basePrice = _quantity * _itemPrice; if (basePrice > 1000) retur转载 2013-05-03 12:18:40 · 685 阅读 · 0 评论 -
重新组织你的函数之九 :Substitute Algorithm(替换你的算法)
把某个算法替换为另一个更清晰的算法。 将函数本体(method body)替换为另一个算法。 String foundPerson(String[] people){ for (int i = 0; i if (people[i].equals ("Don")){ return "Don";转载 2013-05-03 12:31:07 · 683 阅读 · 0 评论 -
重新组织你的函数之五 :Introduce Explaining Variable(引入解释性变量)
你有一个复杂的表达式。 将该表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。 if ( (platform.toUpperCase().indexOf("MAC") > -1) && (browser.toUpperCase().indexOf("IE") > -1) && wasInitialized() && resize >转载 2013-05-03 12:21:18 · 791 阅读 · 0 评论 -
重新组织你的函数之一 :Extract Method(提炼函数)
你有一段代码可以被组织在一起并独立出来。 将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 void printOwing(double amount) { printBanner(); //print details System.out.println ("name:" + _name); System.out.println转载 2013-05-03 12:09:46 · 736 阅读 · 0 评论