重构
weixin_37716758
这个作者很懒,什么都没留下…
展开
-
Replace Method with Method Object 以函数对象取代函数
以函数对象取代函数使用场景:你有一个大型函数,其中对局部变量的使用使你无法采用Extract Method.解决方法:将这个函数放进一个单独的对象中,如此一来局部变量就变成了对象内字段,然后可以在同一个对象将这个大型函数分解为多个小型函数。代码解释:package 第六章;public class Account { //重构前:较为大型的函数体 int gamma(int inp...原创 2019-07-18 23:31:15 · 230 阅读 · 0 评论 -
Replace Temp with Query 以查询取代临时变量
以查询取代临时变量:原因:局部变量会使代码难以提炼,所以尽可能替换为查询式。备注:此手法可能会担心性能问题。例如basePrice()运算多次,现在先不用管他,因为他十有八九根本不会造成任何影响。package 第六章;public class ReplaceTempWithQuery { int _quantity = 100; int _itemPrice = 100; //...原创 2019-07-16 23:52:36 · 255 阅读 · 0 评论 -
Split Temporary Variable 分解临时变量
分解临时变量:当你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不被用于收集计算结果。针对每次赋值,创造一个独立、对应的变量。备注:如果临时变量承担多个责任,它就应该被替换(分解)为多个临时变量,每个临时变量只承担一个责任package 第六章;public class SplitTemporaryVariable { static double _primaryForce =...原创 2019-07-17 00:16:41 · 180 阅读 · 0 评论 -
Remove Assignments to Parameters 移除对参数的赋值
移除对参数的赋值:以一个临时变量取代该参数的位置。解释:首先清楚“对参数赋值”说法的意思。如果把一个名为foo的对象传递给某个函数,那么,“对参数赋值”意味着改变foo,使它引用另一个对象。如果你在“被传入对象”身上进行什么操作,那没什么问题。代码解释: void aMethod(Object foo){ foo.modifyInsomeWay(); //that's ok...原创 2019-07-17 07:57:18 · 287 阅读 · 0 评论 -
Replace Type Code with State/Strategy 以State/Strategy取代类型码 + Replace Conditional with Polymorphism
以State/Strategy取代类型码:做法:使用Self Encapsulate Field 将类型码自我封装新建一个类,根据类型码的用途为它命名,这则变成一个状态对象为这个类添加子类,每个子类对应一种类型码在超类中新建抽象的查询函数,用以返回类型码。每个子类覆写该函数,返回确切的类型码。...原创 2019-08-20 01:10:06 · 143 阅读 · 0 评论 -
Replace Subclass with Fields 以字段取代子类
使用场景: 当你的各个子类的唯一差别只在“返回常量数据”的函数身上时,使用字段取代子类。使用方法: 修改这些函数,使它们返回超类中的某个(新增)字段,然后销毁子类。重构前:public abstract class Person { abstract boolean isMale(); abstract char getCode(); }public class Male...原创 2019-08-22 01:16:51 · 166 阅读 · 1 评论 -
Introduce Null Object (引入Null对象)
使用场景:你需要再三检查某对象是否为null使用方法:将null值替换为null对象案例一:package 第九章;public class Customer { private String name; private BillingPlan billPlan; private PaymentHistory paymentHistory; //步骤一:源类中添加isNull(...原创 2019-08-26 09:10:07 · 567 阅读 · 0 评论 -
Introduce Parameter Object (引入参数对象)
Introduce Parameter Object (引入参数对象)原创 2019-08-29 15:36:54 · 1120 阅读 · 1 评论