为了账号安全,请及时绑定邮箱和手机立即绑定

关于java方法里的非空判断的疑问,谢谢

关于java方法里的非空判断的疑问,谢谢

扬帆大鱼 2019-03-28 22:15:17
   public static void main(String[] args) {        String result = replaceStr("jaja");        if (result != null) {            //在这里又要判断下非空              int count = 50 + Integer.parseInt(result);        }    }        public static String replaceStr(String tem){        String result;        if (tem == null) {            result = null;        } else {            String substring = tem.substring(0, 1);            result = substring;        }        return result;    }如上代码,我的疑惑时,当参数tem为空,方法返回null,那岂不是又要在调用replaceStr这个方法的地方又要判断次返回值是否为null?那这个代码看上去不是很难看,好多if(**!=null)这样的语句。我想问的是:有没有一种设计,可以只要在一处判断非空,其他地方只要写业务逻辑就行了?谢谢
查看完整描述

7 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

个人做法:

  1. 除非需要null返回,否则别返回null值;别传递null值【《Clean Code》也这么写】

  2. 如果不返回null,处理方式一:直接抛NPE;处理方式二:用Optional(可以避免我们忘记!=null的校验,同时比到处!=看着优雅)


查看完整回答
反对 回复 2019-04-19
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

而且你的提问有些费解,看不懂你想问什么问题。


查看完整回答
反对 回复 2019-04-19
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

首先,你代码都写错了


        if (tem != null) {

            result = null;

        } else {

            String substring = tem.substring(0, 1);

            result = substring;

        }  

应该是if (tem == null) 

其次,即使这样改过来还是不够严谨,tem=""时else里面不就有问题了。 

再次,你这才判断两次为null就嫌多啊。 

最后,判断的次数是根据你的业务逻辑来的,即使在某个地方减少了判断的次数,在别的地方还是要还的。


查看完整回答
反对 回复 2019-04-19
?
HUX布斯

TA贡献1876条经验 获得超6个赞

你别把null 作为方法的返回值就不用检测null了,比如你这个例子里面返回"0"就可以了。


查看完整回答
反对 回复 2019-04-19
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

如果确定你的term入参在正常业务场景下必须不能为null,那么没必要去做null值得判断,尽早抛出空指针异常是合理的。


查看完整回答
反对 回复 2019-04-19
?
大话西游666

TA贡献1817条经验 获得超14个赞

可以通过业务逻辑严密设计来减少 非空的判断,但是依然不能保证维护代码产生的畸变,所以为了代码的健壮性,还是使用之前首先判断, 如果散落代码 str == null || "".equals(str) 很不好看,可以使用自己封装工具或使用开源工具,比如apache的StringUtils 等.

查看完整回答
反对 回复 2019-04-19
  • 7 回答
  • 0 关注
  • 608 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号