码迷,mamicode.com
首页 > 其他好文 > 详细

今天发现了我写的一个bug

时间:2015-09-23 18:52:58      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

    private void getFiles(String path, List<File> list) {
        File dir = new File(path);
        if (dir.isFile()) {
            list.add(dir);
        } else {// is folder
            File[] fileArr = dir.listFiles();
            for (File file : fileArr) {
                getFiles(file.getAbsolutePath(), list);
            }
        }
    }

对,上面的这段代码就是我写出来的bug。先说下该段代码的用意:传过来一个文件/目录路径,遍历下面的所有文件。

这段代码暴露出来的问题是,假如用户输入的是 ~@#/a/a8888% 这样的参数,此时,代码会执行到else里面,结果就报了空指针异常。

这里面就是犯了过分相信用户输入的错误,也属于程序的健壮性中的一种。

 

问题的部分先不多说了。由此,我却联想到了另外一个问题,到底该在何处去验证我们的输入。

看示例:

    private void function(){
        
        String para = getPara();
        fun1(para);
        fun2(para);
        fun3(para);
        ……
    }

像上面的这个示例一样,如果我们在每个方法里面都去验证数据的合法性,总觉得有些啰嗦重复,但是如果不验证,只在getpara方法里面验证,万一哪天需求变更,或者是方法修改,抑或是别的人调用fun1()的时候没有考虑到数据的有效性,就又会引发问题。

思来想去还是没有结果。最终就归结为具体问题具体对待吧(尼玛这也太不负责了吧)

 

ps:本人写博客不多,表达能力较差,轻喷

 

今天发现了我写的一个bug

标签:

原文地址:http://www.cnblogs.com/zzti08/p/4832987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!