1、重构让代码更易阅读和理解。
2、重构改进软件设计
我个人认为,上述两点完全可以是重构的动力。
二、什么情况需要重构1.重复代码
2.过长函数
3.过大的类
4.过长参数列
5.违反单一职责原则(即有多个理由去修改一个类)
6.散弹式修改(如果每遇到某种变化,你都必须在许多不同的类做出许多小修改,就应该考虑提到一个类中)
7.数据泥团(如果在很多地方看到相同的三四项数据:两个类中相同的字段、许多函数中相同的参数。就可以把他们提到单独类中)。
8.switch惊悚现身(看见switch可用多态来替换)
9.令人疑惑的临时变量(一般复杂算法中会出现不止一个的临时变量,就会产生这样的问题,书中建议提到一个单独类中去)
三、重构手法以函数对象取代函数(Replace Method with Method Object)
场景:你有一个大型函数,其中局部变量的使用让你无法采用Extract Method。
用法:将这个函数放进一个单独的对象中,如此一来局部变量就变成了对象内部的字段。然后你可以在类里面将大型函数分解为多个小型函数。
例子:
-
Class Order{
-
double price(String parm){
-
double primaryBasePrice;
-
double basePrice;
-
double price;
-
.... //other code
-
this.mthod();
-
}
-
}
我们可以给他转换成以下的样子:
-
Class Order{
-
double price(String param,Order sourceOrder){
-
return new PriceHandle(param,sourceOrder).compute();
-
}
-
}
-
Class PriceHandle{
-
double primaryBasePrice;
-
double basePrice;
-
double price;
-
String param;
-
Order order;
-
public PriceHandle(String param,Order sourceOrder){
-
this.param=param;
-
this.order=sourceOrder;
-
}
-
public double compute(){
-
otherMethod();
-
.... //code1
-
return order.method();
-
}
-
public void otherMethod(){
-
.... //code2
-
}
-
}
文中重点摘要:
替换算法(Subsittue Algorithm)
-
String checkPerson(String[] people){
-
for(int i=0;i
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?