代码优雅进阶之路-陆续更新,来自平日学习积累

  • 当if分支语句是两种情况的时候,有时候可以用Math.min代替?
//我的写法
int diff = timeSeries[i]-timeSeries[i-1];
if(diff > duration){
  sumTime += duration;
}else{
  sumTime += diff;
}

//别人的写法
sumTime += Math.min(timeSeries[i]-timeSeries[i-1],duration);
  • 当每一次调用方法时最终的结果都会做一个类似甚至一样的操作,也许可以省掉不必要的if,在return的时候做这个操作?
//我的写法
for(int i = 1;i <= timeSeries.length;i++){
  if(i<timeSeries.length){
    ...
  }else{
    sumTime += duration;
  }
}
return sumTime;

//别人的写法
for(int i = 1;i < timeSeries.length;i++){
  ...
}
return sumTime+duration;
  • 如何抵御边界测试?(此法并不适用于所有的边界测试,只是一个情况
//用下标代替存储值,在进行比较操作的时候,千万别自己定义一个阈值就直接用了(很容易过不了边界测试!!!)
//像这样定义无用的下标,然后把重复的情况交给上一个条件处理,下一个情况下标未初始化时直接赋值
int[] result = {-1,-1,-1};
for(int i = 0;i < nums.length;i++){
  if(i==0){
    result[0] = i;continue;
  }
  ...
  if(...){
    ...
  }else(){
    ...
    if(i==1 || result[1]==-1){
      result[1] = i;continue;
    }
    if(...){
      ...
    }else{
      if(result[2]==-1){
        ...
      }
      if(...){}
    }
  }
}

你可能感兴趣的:(代码优化,java)