gpt4 book ai didi

Java 空指针检查以加快代码执行速度

转载 作者:行者123 更新时间:2023-12-01 07:24:08 24 4
gpt4 key购买 nike

想象一个方法,它接受一个对象作为参数,并使用 foreach 循环进行检查,让我们说一些集合内的其他值,可以根据传入的参数找到/过滤这些值。在函数开头检查空指针并立即返回空集合或空指针是否是一个好习惯,或者最好省略空指针检查,因为每个循环都会处理它,但是函数将需要更多时间来执行(因为每次迭代的整体)。假设这个集合不大(没那么耗时)。

 public ArrayList<Foo> find(Bar bar) {  
if (bar == null) { // get rid of these part?
return null; //
} //

ArrayList<Foo> foos = new ArrayList<Foo>();
for (Foo f: Foo.values()) {
if (f.someBarCollection.contains(bar)) {
foos.add(f);
}
}

return foos;
}

我认为如果您知道做任何进一步的操作是浪费时间,那么最好检查 null 并立即返回,因为您知道不需要它们。因此,我倾向于以更短的代码为代价来使用语义,以使事情变得明确。

编辑:让我进一步阐述一下。该函数的结果与 OR 相同,但没有空检查部分。问题只是,我是否应该检查它,只是为了更好的表达(以及一点性能增益,但这不是问题),但代码会更长(因为增加了检查)?

最佳答案

这取决于

根据您的 API,当收到的参数具有 null 值时,您可以执行以下操作:

  • 抛出异常。可能IllegalArgumentException或描述此错误论点原因的自定义异常。
  • 返回一个 null 值,并让客户端在其余代码中处理结果。
  • 返回空结果。如果是 List (不是 ArrayList),您可以返回 Collections#emptyList .

无论您使用 API/方法的哪个选项,请确保在 javadoc 中正确记录它。

关于Java 空指针检查以加快代码执行速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413469/

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