开发过程中遇到的代码

超长的if内容

        if("110".equals(dataStatus)||"120".equals(dataStatus)){ 
            wcd=String.valueOf(Integer.parseInt(exeId)*50);
        }else if((dataStatus.startsWith("2")||dataStatus.startsWith("A")||dataStatus.startsWith("B")||dataStatus.startsWith("C")||dataStatus.startsWith("D"))&&"Y".equals(ifJxcs)){
            wcd=String.valueOf(Integer.parseInt(exeId)*20);
        }else if((dataStatus.startsWith("2")||dataStatus.startsWith("A")||dataStatus.startsWith("B")||dataStatus.startsWith("C")||dataStatus.startsWith("D"))&&"N".equals(ifJxcs)){
            wcd=String.valueOf(Integer.parseInt(exeId)*25);
        }else if("300".equals(dataStatus)){
            wcd=String.valueOf(Integer.parseInt(exeId)*100);
        }

像这样的if语句完全可以用更简单的方法来实现么,比如下面这个:

//声明在类内部
private static List<Char> STATUS_PREFIXES = { '2', 'A', 'B', 'C', 'D'}

char p = dataStatus.charAt(0);
if(STATUS_PREFIXES.contains(p){ //这样短很多吧
  if("Y".equals(ifJxcs)){
      //TODO  equal
  }
  else{
      //TODO when not equal
  }
}

超长的if内容2

        if("init".equals(action)||"export".equals(action)||"toExcel".equals(action)
                ||"toExcelFull".equals(action)||"toPDF".equals(action)||"toPDFFull".equals(action)||"beforeSort".equals(action)
                ||"createInitData".equals(action)||"createDynamicData".equals(action)|| "ajaxDropAction".equals(action)
                ||"beforeFilter".equals(action)||"filterCondAdd".equals(action)||"filterCondDelete".equals(action)
                ||"filterCondInsert".equals(action)||"filterCondOk".equals(action)||"filterCondRefresh".equals(action)
                ||"filterCondSave".equals(action)||"filterSchemeAdd".equals(action)||"filterSchemeChanged".equals(action)
                ||"filterSchemeDelete".equals(action) ||"refreshList".equals(action)){
            return super.execute();
        }

这东西,简直不想看……

解决方案,同上一个,用List或者Map来存储一下,然后 contains就可以了!易读,美观!用MAP的话,性能还能提高一点点~

超占空间的赋值语句

    public void setYlcsVo(SqjwFwSyfwNew sqjwFwSyfwNew,SqjwDwSydwjbxx sqjwDwSydwjbxx,SqjwDwYlcs sqjwDwYlcs){
        //封装Vo实体
          sqjwYlcsVo.setDwdzDzbm(sqjwDwSydwjbxx.getDwdzDzbm());
          sqjwYlcsVo.setDwdzSsxqdm(sqjwDwSydwjbxx.getDwdzSsxqdm());
          sqjwYlcsVo.setDwdzQhnxxdz(sqjwDwSydwjbxx.getDwdzQhnxxdz());
          sqjwYlcsVo.setDwmc(sqjwDwSydwjbxx.getDwmc());
          sqjwYlcsVo.setSjmc(sqjwDwSydwjbxx.getSjmc());
          sqjwYlcsVo.setZddwbs(sqjwDwSydwjbxx.getZddwbs());
          sqjwYlcsVo.setSspcs(sqjwDwSydwjbxx.getSspcs());
          sqjwYlcsVo.setSszrq(sqjwDwSydwjbxx.getSszrq());
          sqjwYlcsVo.setJymjMjpfm(sqjwDwSydwjbxx.getJymjMjpfm());
          sqjwYlcsVo.setJyfwzy(sqjwDwSydwjbxx.getJyfwzy());
          sqjwYlcsVo.setYyzzh(sqjwDwSydwjbxx.getYyzzh());
          sqjwYlcsVo.setYyzzyxqQsrq(sqjwDwSydwjbxx.getYyzzyxqQsrq());
          sqjwYlcsVo.setSfjxcs(sqjwFwSyfwNew.getSfjxcs()); 
          sqjwYlcsVo.setJxcsfl(sqjwFwSyfwNew.getJxcsfl()); 
//...
}

修改方法:
 BeanUtils.copyProperties(target, source);//使用工具类来完成对象的属性copy 

你可能感兴趣的:(开发过程中遇到的代码)