代码规范 那种更好一些?

两个方法做的同样的工作,那种写法更好一些?有没有更好的写法呢?

 

private String sixOperaBaseChk(String code,String status,String[]modelId,String account)throws Exception{
     // 0 失败  1 成功  2 基本型利润率不达标  3基本型利润率未维护  4 plm编码未返回  6 ddp利润率未维护
     TargetSetDAO_S daos = new TargetSetDAO_S();
     TargetSetDAO dao = new TargetSetDAO();
     String msg = "3";
     FeeRatioVO vo = daos.baseInTarget(code, true);
     if(vo!=null&&!"".equals(vo.getFeeValue())){
      BigDecimal bt = new BigDecimal(vo.getFeeValue());
      List<ProjItemDetialVO> ls = dao.checkModelVerson(modelId, status);
      if (ls.size() == 0){
                boolean tp = true;
                if ("3".equals(status)||"2".equals(status)){
                    ls = dao.chkPlmIsNull(modelId);
                    tp = ls.size() > 0 ? false : true;
                }
                if (tp){   
                    boolean ratioChk = true;
                    for(int i=0;i<modelId.length;i++){
                        String basePlan = daos.sixOperaInPlan(modelId[i]);
                        BigDecimal bp = new BigDecimal(basePlan);
                        if(bp.compareTo(bt)==-1){
                            ratioChk = false;
                            msg = "2";
                        }
                    }
                    if(ratioChk){
                        int flag = dao.toFina(status,modelId,account);
                        msg = flag + "";
                    }
                }
                else{
                     msg = "4";
                }
            }else{
                msg = "";
                for (ProjItemDetialVO pidv : ls){
                     msg += "[" + pidv.getModelName() + "]";
                }
            }
     }
     
     return msg;
    } 

----------------------------

 

private String sixOperaBaseChk(String code,String status,String[]modelId,String account)throws Exception{
     // 0 失败  1 成功  2 基本型利润率不达标  3基本型利润率未维护  4 plm编码未返回  6 ddp利润率未维护
     //检查基本型目标利润率是否维护
     DefFeeRatioDAO defRatioDao = new DefFeeRatioDAO();
     List<BrandVO> brands = defRatioDao.getProjectBrands(code);
     Map<String,FeeRatioVO> baseRatioTarget = defRatioDao.getBaseRatioTarget(code, brands, true);
     for(BrandVO vo:brands){
          FeeRatioVO feeRatio = baseRatioTarget.get(vo.getToBrand());
          if(feeRatio == null || "".equals(feeRatio.getFeeValue())){
              return "3";
          }
     }
     //检查型号是否都保存过
     TargetSetDAO dao = new TargetSetDAO();
     List<ProjItemDetialVO> ls = dao.checkModelVerson(modelId, status);
     if(ls.size()>0){
      String msg = "";
            for (ProjItemDetialVO pidv : ls){
                msg += "[" + pidv.getModelName() + "]";
            }
            return msg;
     }
     //检查PLM编码是否回传
        if ("3".equals(status)||"2".equals(status)){
            ls = dao.chkPlmIsNull(modelId);
            if(ls.size()>0){
             return "4";
            }
        }
        //基本型利润率闸口
        for(int i=0;i<modelId.length;i++){
           ProjItemDetialVO vo = defRatioDao.getModelBaseRatioPlan(modelId[i]);
           BigDecimal ratioTarget = new BigDecimal(baseRatioTarget.get(modelId[i]).getFeeValue());
           BigDecimal modelRatioPlan = new BigDecimal("0");
           if(vo!=null){
               ProgramService ps = new ProgramService();
               modelRatioPlan = new BigDecimal(ps.div(vo.getProfit(), vo.getIncome(), 4));
           }
           if(modelRatioPlan.compareTo(ratioTarget)==-1){
               return "2";
           }
         }
        return String.valueOf(dao.toFina(status,modelId,account));
    }

 

 

用设计模式进行优化 此代码不好维护 职责链模式可供参考

MyEclipse中
alt+shift+j

第二种好点。。第一种我第一次读的话。。我先要确定最外层的if判断是什么意思再看对应的else然后还要分别看if和else里面的代码是什么意思。。来回反复。。。。比较麻烦。。。第二种我可以从上往下顺利的看下去。

在团队开发过程中,代码规范非常重要,我们项目组一般是这样子做的:制定一个统一的template,要求每个开发人员导入和使用这个template。
这样最大的好处:svn提交的时候你格式化的代码和别人格式化后的代码风格一致,不会因为代码风格问题比较出差异;在svn上可以很方便的合并代码。

return 最好用枚举来表示.
一个小小的建议.