有没有理由在java中使用null == value condition?

bha*_*ral 2 java

我在某人的代码中看到了很多:null-check条件是这样编写的:

if (null == value)
Run Code Online (Sandbox Code Playgroud)

而不是

if (value == null)
Run Code Online (Sandbox Code Playgroud)

我认为没有任何理由null在Java中使用运算符.这样做有什么好处吗?这只是一个C++程序员错误地将他的技能应用于Java的情况,还是我错过了一些重要的东西?

das*_*ght 11

这是所谓的"尤达条件"(项目#1)的情况.尽管可以在C/C++中对它们进行合理化,但没有理由在Java中使用它们.

在C/C++中,任何类型的表达式都可以进入ifs和whiles.写作

if (var = NULL) // No compile-time error in C/C++
Run Code Online (Sandbox Code Playgroud)

代替

if (var == NULL)
Run Code Online (Sandbox Code Playgroud)

是新手之间的常见错误.据说Yoda条件是解决这个问题的一种补救办法,代价是"代码化"你的代码:C/C++将陷阱分配到NULL

if (NULL = var) // Compile-time error
Run Code Online (Sandbox Code Playgroud)

但"反向" NULL检查没问题:

if (NULL == var)
Run Code Online (Sandbox Code Playgroud)

由于Java考虑了控制块内部非布尔表达式if,whilefor为错误,它会捕集器var = null代替var == null,触发一个错误.因此,没有理由通过"Yodifying"你的表达来放弃可读性.