我正在研究具有以下样式的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 次 |
| 最近记录: |