gpt4 book ai didi

java Nested If 或 single if

转载 作者:太空狗 更新时间:2023-10-29 22:49:12 25 4
gpt4 key购买 nike

我对以下代码块(示例)的执行有一个基本的疑问:

String version = computer.getSoundcard().getUSB().getVersion();

如果 Soundcard 不存在,可能会抛出 NullPointerException

所以我有,

选项 1:

if(computer!=null && 
computer.getSoundCard() !=null &&
computer.getSoundCard().getUSB()!=null) {
version = computer.getSoundcard().getUSB().getVersion();
}

选项 2:

if(computer !=null){
SoundCard sc = computer.getSoundCard();
if(sc!=null){
USB usb = sc.getUSB();
if(usb!=null){
version = usb.getVersion();
}
}
}

根据我的理解,选项 1 将有额外的开销,因为它必须多次评估相同的表达式,例如 computer.getSoundCard() 3 次, computer.getSoundCard().getUSB() 2 次。

我的理解正确吗?

编辑 1: 将选项 2 从

更改为
version = computer.getSoundcard().getUSB().getVersion();

最佳答案

更好的方法是将这个 USB 版本获取代码提取到另一个方法中,比如 getComputerUsbVersion(),然后将超长的 if 或嵌套的 if-else block 分成几个简单的 if block :

public String getComputerUsbVersion(Computer computer) {

if (computer == null) return null;

SoundCard soundCard = computer.getSoundCard();
if (soundCard == null) return null;

USB usb = soundCard.getUSB()
if (usb == null) return null;

return usb.getVersion();
}

如您所见,代码更加简洁易懂,超长的if条件或嵌套的if-else block 也被避免了。您甚至可以在以后非常轻松地向此方法添加更多条件检查代码。

关于java Nested If 或 single if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32643048/

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