重构-改善既有代码的设计
HDPCOMEON
这个作者很懒,什么都没留下…
展开
-
重新组织函数----Extra Method(提炼函数)
你有一段代码可以被组织在一起并独立出来讲这段代码放在一个独立函数中,并让函数名称解释该函数的用途范例:无局部变量void printOwing(double amount){printBanner();//printDetailSystem.out.println("name:"+_name);System.out.println("amount:"+amount);原创 2014-12-05 11:15:04 · 1083 阅读 · 0 评论 -
重新组织函数--Inline Method(内联函数)
一个函数的本体与名称同样清晰易懂在函数调用点插入函数本体,然后移除该函数。int getRating(){return (moreThanFiveLateDeliveries()?2:1);}boolean moreThanFiveLateDeliveries(){_numnerOfLateDeliveries>5;}int getR原创 2014-12-05 12:04:50 · 662 阅读 · 0 评论 -
重新组织函数--Introduce Explaining Variable(引入解释性变量)
你有一个复杂的表达式。 将该复杂表达式(或其一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。原创 2014-12-05 14:52:04 · 756 阅读 · 0 评论 -
重新组织函数--Substitute Algorithm(替换算法)
你想要把某一个算法替换为另一个更清晰的算法。 将函数本体替换为另一个算法。原创 2014-12-05 16:21:08 · 942 阅读 · 0 评论 -
重新组织函数--Replace Method with Method Object(以函数对象取代函数)
你有一个大型函数,其中对局部变量的使用使你无法采用Extra Method()将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。然后你可以在同一个对象中将这个大型函数分解为多个小型函数。 Class Order... double price(){double primaryBasePrice;double secondaryBasePrice;doub原创 2014-12-05 16:01:32 · 696 阅读 · 0 评论 -
重新组织函数--以查询取代临时变量(Replace Temp with Query)
你的程序以一个临时变量保存某一表达式的运算结果将这个表达式提炼到一个独立函数中。将这个临时变量的所有引用点替换为对新函数的调用。此后,新函数就可以被其他函数使用。double basePrice=_quantity*_itemPrice;if(basePrice>1000){return basePrice*0.95;else return basePrice*0.原创 2014-12-05 14:17:36 · 864 阅读 · 0 评论 -
重新组织函数--Split Temporary Variable(分解临时变量)
你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不是被用于收集计算结果。针对每次赋值,创建一个独立、对应的临时变量。原创 2014-12-05 15:20:03 · 743 阅读 · 0 评论 -
在对象之间搬移特性---搬移函数
你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被后者调用 在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数。,或是将旧函数完全移除。原创 2014-12-08 10:32:51 · 1001 阅读 · 0 评论 -
在对象之间搬移特性---Hide Delegate(隐藏委托关系)
客户通过一个委托类来调用另一个对象。在服务类上建立客户所需的所有函数,用以隐藏委托关系。动机:封装即使不是对象的最关机特性,也是最关机特性之一。“封装”意味着每个对象都应该少了解系统的其他部分。如此以来,一旦发生变化,需要了解这一变化的就比较少---这会使系统比较容易进行。任何学过对象技术的人都知道:虽然Java将字段声明为public,但你还是应该隐藏对象的字段。原创 2014-12-12 14:50:10 · 1069 阅读 · 0 评论