gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:15 24 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();
}
}
}
}

当我不需要知道什么失败了并且如果某些内容为空时什么都不做,一种方法可能是

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

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

最佳答案

异常(exception)版本(类似于使用 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与null检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27951622/

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