写程序也有不少时间了每次写完一个方法,总发现里面用来判断各种错误可能性的代码占据了大部分尤其是在web程序里面,很多东西都依赖用户的request里面包含了哪些东西来进行下一步即使很多地方都封装的很好了,但是最终出现的代码还是类似下面这样
if(workbook==null) {
Common.err("文件损坏,无法读取");
return;
}
if(workbook.getNumberOfSheets()<1) {
Common.err("找不到工作簿");
return;
}
HSSFSheet sheet = workbook.getSheetAt(0);
if(sheet==null) {
Common.err("无法读取第一个工作簿");
return;
}
int rowCount = sheet.getPhysicalNumberOfRows();
if(rowCount<2) {
Common.err("表格内至少要有两行");
return;
}
这个是我以前写的处理一个用户上传Excel的部分代码,还不包含用户登录判断、session是否有效
每个if里面的可能性都是有可能出现的,也就是,每个if都是有必要的
但是整个业务逻辑,绝大多数行都成了这种一个个if,每个if要3行,加起来也不少了
要说问题,这也不是问题,但是总隐约感觉这是个大问题。大家有什么解决办法么?或者说有什么想法么?

解决方案 »

  1.   

    还有要提的是,上面我这段代码代表性不是很高这种还是不大好避免的有很多情况都是在判断是否为null曾经有过,一两百行代码,有70%都是在判断各种东西是否为null这个才是我感觉出问题的部分。
      

  2.   

    可以用Struts2 的框架,可以让的action类实现接口是避免重复逻辑!!!!!另外还有内置的验证器!!!!!!!!!!
      

  3.   

    多个if判断可以和在一起写,只不过这样的话,错误信息报告就没有那么准确了,比如:
    if(workbook==null) {
        Common.err("文件损坏,无法读取");
        return;
    }
    if(workbook.getNumberOfSheets()<1) {
        Common.err("找不到工作簿");
        return;
    }
    合成:
    if(workbook==null && wordbook.getNumberOfSheets() < 1) {
        Common.err("找不到工作簿");
        return;
    }
      

  4.   

    你可以试着用javaBean啊,有些工具也可以的。
    用javaBean的话,很多地方都用不着判断是否为null。
      

  5.   


    javaBean是什么东西?框架还是什么?貌似不是概念吧。还是我见识不够?请指教。
    就是指望能有现成的东西来解决。不过似乎这种东西没什么好的解决办法,不管是放在业务逻辑里面还是集中提取出来成为一个框架,都是起码要判断一次的。也许能够指望的,只有编程语言的发展了吧。不过还是指望能有研究过这类问题的人发表点意见,能有现成的解决方案最好了