一尘不染

String.equals()参数排序

java

我最近在最近的回答中使用以下内容收到了反对意见:

String word = ...;
if ("s".equals(word) || "y".equals(word)

由于使用“ yoda条件”而给出了下票。我要求进一步解释,但未提供任何解释。我更喜欢这种风格以避免可能NullPointerException

这是不良的编码风格吗?如果是这样,为什么?


阅读 230

收藏
2020-09-08

共1个答案

一尘不染

Bill Pugh在Devoxx2011上问了这个问题"xyz".equals(str)。我和比尔在一起,现在更喜欢str.equals("xyz")

Java传统的基础是我们尽早发现错误。NPE非常普遍。我们希望尽快将这些空值路由出去。

如果您期望引用maynull,那么我并不特别反对反向表示法。很明显很容易理解,可能会有null单独的null检查,但是应该很好地理解相反的顺序,并且可以将代码与null禁止的正常情况充分区分开。

在安全性方面,null-tolerance容纳的一些错误是漏洞。

2020-09-08