重构技巧
重构技巧:
1,重复代码提炼
将代码中重复代码提取到一个单独的方法中,大大减少代码量,
例如:微信授权方法中需要多次请求微信服务器,可以将多次的HTTP请求进行单独提炼
2,冗长方法分割
将方法中冗长的代码进行适当分割,将分割的代码组成一个新的方法
例如:微信授权方法对AuthCode,AccessToken,Openid等信息进行多次验证和获取;
<1>可以将多次的请求先进行重复代码提炼,对请求进行单独方法处理;
<2>对微信授权方法中不同功能模块分割,将分割代码组成新方法;
3,嵌套条件分支优化
【1】将不满足某些条件的情况放在方法前面,并及时跳出方法
例如:
public void someMothod(Object A, Object B){
if(A == null){ //先判断不满足条件的情况,是方法及时跳出
return ;
}
if(B == null){
return ;
}
...
}
【2】嵌套条件合并
例如:
public void someMothod(Object A, Object B){
if(A != null && B != null){ //将嵌套条件进行合并,避免由于分离降低代码可读性
...
}
}
4,去掉一次性的临时变量
一次性的临时变量会影响性能和代码可读性
例如:
public void someMothod(int num){
// int temp = getUserCount();
// return num * temp;
//避免不必要的临死变量产生
return num * getUserCount();
}
5,消除过长的参数列表
对于参数过多的方法,可以将过多的参数封装成数据传输对象,进行传参
例如:
public void someMothod(DataDO dataDO){ //尽量使用数据传输对象(DataDO ps:getter/setter)
...
}
6,提取类或继承体系中的常量
【1】消除系统中的一些魔数和字符串常量,提高对系统常量的维护性
例如:微信授权中多个公众号的APPID,SECRET,请求地址,系统响应信息等应定义枚举或者静态常量
private static final String PARAM_IS_NULL = "参数为空";
public String someMothod(Object A){
if(A == null){
return PARAM_IS_NULL; //尽量使用静态变量
}
}
【2】子类中有一样的属性和方法,放到父类当中
7,让类提供应该提供的方法
例如:
public int someMothod(DataDO dataDO){
// int i = dataDO.getI();
// int j = dataDO.getJ();
// return i * j; //应该将此部分实现让DataDO实现
// 让类提供应该提供的方法,而不是我们替他完成,否则会出现重复代码
return dataDO.getResult();
}
8,拆分冗长类
冗长类拆分注意类的属性; 两批属性应该是在逻辑上可以分离;如果存在属性存在拆分前后的两批方法中,
可以通过参数传递来解决;