我在某人的代码中看到了很多: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,while和for为错误,它会捕集器var = null代替var == null,触发一个错误.因此,没有理由通过"Yodifying"你的表达来放弃可读性.
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |