Dataflow Anomaly Analysis

【原因分析】
原因分为三种:
UR 已定义的变量未初始化(赋值)就使用,例如:
                String name;
                System.out.println(name);
 
DU  变量定义以后仅在后面的某个分支中使用,例如:
                String name = "sam";
                if ("a".equals(argumentName)) {
                        System.out.println(name);
                }
        或者变量在某个分支中赋值后未使用过,例如:
                public void test1(int i) {
                        String name;
                        if (i > 0) {
                                name = "张三";
                                System.out.println(name);
                        } else {
                                name = "李四"; // 从这里开始到方法结束,未使用过此变量。
                                ......
                        }
                }
 
DD 已赋值的变量在未使用的情况下重新赋值,例如:
                String name = "张三";
                ......
                name = "李四";
                System.out.println(name);
 
【影响分析】
会导致运行时异常,或执行一些不必要的代码,降低程序运行效率。
 
【修改建议】
需要修改。
UR类型的,先初始化再使用,例如:
                String name = "sam";
                System.out.println(name);
                
DU类型的,将仅在某分支中使用的变量的定义移动到该分支中去,例如:
                String name = "sam";
                if ("a".equals(argumentName)) {
                        String name = "sam";
                        System.out.println(name);
                }
                
在某个分支中赋值后未使用过的情况,则去掉该赋值语句:
                public void test1(int i) {
                        String name;
                        if (i > 0) {
                                name = "张三";
                                System.out.println(name);
                        } else {
                                name = "李四"; // 从这里开始到方法结束,未使用过此变量。
                                ......
                        }
                }
 
DD类型的,定义变量时先不要初始化:
                String name = "张三";
                ......
                name = "李四";
                System.out.println(name);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值