一个函数多长才算合适?
长度其实并不是问题,重要的是函数名称和函数本体的语义距离。如果提炼的动作可以强化代码的清晰度就去做,就算函数名称比提炼出的代码还长也没关系。
条件表达式
1.合并条件表达式
if(onVacation()){if(lengthOfService()>10){
return 1 ;
}
}
return 0.5 ;
修正后
if(onVacation()&& if(lengthOfService()>10){
return 1 ;
} else {
return 0.5 ;
}
2.卫语句简化条件表达式
public double getAdiusledCapital(){
double result = 0.0 ;
if(capital > 0.0){
if(intRate>0.0&&duration>0.0){
result = 18 ;
}
}
return result ;
}
修正后 1
public double getAdiusledCapital(){
double result = 0.0 ;
if(capital <= 0.0){
return result ;
}
if(intRate>0.0&&duration>0.0){
result = 18 ;
}
return result ;
}
修改后 2
public double getAdiusledCapital(){
double result = 0.0 ;
if(capital <= 0.0){
return result ;
}
if(!(intRate>0.0&&duration>0.0)){
return result ;
}
result = 18 ;
return result ;
}
修改后 3
public double getAdiusledCapital() {
double result = 0.0;
if (capital <= 0.0) {
return result;
}
if ((intRate < 0.0 || duration < 0.0)) {
return result;
}
return 18;
}
3.将查询函数与修改函数相分离