【发布时间】:2015-11-20 01:49:14
【问题描述】:
为什么空对象设计模式优于空对象检查。 如果我们查看空对象设计模式中的内存占用,我们会创建一个相同类型的新虚拟对象。这表明如果我们在搜索查询中有大尺寸的对象和大量可空对象,这种模式将创建那么多的空对象,这将占用比简单的检查更多的内存,而我的成本可以忽略不计的性能延迟。 /p>
【问题讨论】:
-
在 Java8 中,您可以使用 Optional 来避免 NullPointerExceptions 而无需执行额外的检查。 oracle.com/technetwork/articles/java/…
-
C# 和 c++ 等其他语言呢
-
@MuhammadNasir 你越有经验,你就越会意识到一个无法运行或充满错误的超快程序比一个运行良好的足够快的程序更糟糕.一切都与性能和内存占用无关。避免错误更重要。
null是许多 bug 的根源,检查 null 经常被遗忘。 -
@MuhammadNasir 我是第二个 JB Nizet。它不像“A 总是比 B 好”——事情。你总是需要考虑上下文。当然,在内存容量非常有限的嵌入式环境中,您会寻找较小的内存占用空间。但在现代服务器上,这可能不是您主要关心的问题。
-
我个人更喜欢 null 而不是使用包装器对象来获取值。返回值的空值检查应该总是如此。无论如何,编译器都会优化任何额外的空值检查代码。您总是希望将 null(无论是 null 还是 Null)分隔到不同的程序流中。如果它为空,我从不让一个对象通过箍。经常检查。然后很容易分离程序流,提供自定义错误消息。使用 Null 对象的开销和更复杂的编程对我来说不值得。无论如何你都要检查一下。
标签: java design-patterns conditional-statements nullable