我正在研究具有以下样式的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条件,那就去吧!
归档时间: |
|
查看次数: |
569 次 |
最近记录: |