是否适合该声明.java中的if(0!= expression或variable){}?

Isa*_*osa 6 java syntax

我正在研究具有以下样式的java源代码:

if (0 == var) {}
and 
if (null == someObj) {}
Run Code Online (Sandbox Code Playgroud)

要么

if (0 != var) {}
and 
if (null != someObj) {}
Run Code Online (Sandbox Code Playgroud)

我应该把它重写为:

if (var == 0) {}
and 
if (someObj == null) {}
Run Code Online (Sandbox Code Playgroud)

提前致谢!.

P.P*_*.P. 13

拥有以下内容是完全有效的:

if (0 == var) {}
and 
if (null == someObj) {}
Run Code Online (Sandbox Code Playgroud)

它被称为yoda条件,以防止意外使用单一=代替==.

我个人从未使用它.但有些人喜欢它.这真的是品味问题.


但是,它在Java中没用.因为,这样的意外拼写错误是在编译时捕获的.

以下将在Java中给出编译时错误.

if( var = 0 ) 
{
//Some code
}
Run Code Online (Sandbox Code Playgroud)

因为赋值操作在Java中不会产生布尔值.但是,在C/C++等语言中,上述内容是有效的,如果未启用警告,编译器将不会出错.上述if条件总是在C/C++中评估为false(0).因此它可能会被忽视并在运行时产生意外结果.

在GCC中,启用所有警告后,它将在C或C++中给出上述警告:

warning: suggest parentheses around assignment used as truth value
Run Code Online (Sandbox Code Playgroud)

所以这在C/C++中可能没有多大用处,因为预计会编译所有警告并修复所有警告.正如我之前所说,这是个人选择而没有任何区别.

所以这if ( 0 == var){}是一个有效的语法,if (var == 0) {}并且如果您更喜欢Yoda条件,那就去吧!