gpt4 book ai didi

java - java中的try/catch vs null检查

转载 作者:IT老高 更新时间:2023-10-28 21:03:01 25 4
gpt4 key购买 nike

有时我面临我必须写一段这样的代码(通常它有更多的嵌套 if 和更复杂的结构,但示例就足够了)

public void printIt(Object1 a){
if (a!=null){
SubObject b= a.getB();
if (b!=null){
SubObject2 c=b.getC();
if(c!=null){
c.print();
}
}
}
}

当我不需要知道什么失败了,如果某些东西是 null 什么都不做,那么一种方法可能是

public void printIt(Object1 a){
try{
a.getB().getC().print();
}catch (NullPointerException e) {
}
}

第二种形式是否有问题,例如性能或其他类型的问题?

最佳答案

异常版本(类似于使用 Groovy 的安全导航运算符 ?. 的链)使得采用 Demeter 法则(或者我称之为 Demeter 的强词建议)和让它成为你晚上的玩物。

同样,深度嵌套的 if 语句会导致代码难以阅读,而在这一切之下,同样存在“违规”,并且此类方法的圈复杂度很高。

public void printIt(Object1 a) {
if (null == a) {
return;
}

SubObject b = a.getB();
if (null == b) {
return;
}

SubObject2 c = b.getC();
if (null == c) {
return;
}

c.print();
}

我宁愿在适当的地方看到 LAM(小辅助方法)来封装检查并且几乎完全消除对问题的需求。

关于java - java中的try/catch vs null检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9758457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com