`
稻-草
  • 浏览: 61949 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

话说if (null == x)

    博客分类:
  • Java
阅读更多

     最近看到Java项目的代码中看到这样的语句,

if (null == model)
{
     ...
}

     我问开发这段代码的同事问什么这么写,同事说是编程规范规定的。

 

     但是在Java项目中,不需要这样写,也不应该这样写。

 

     if 的判断语句倒着写,这种写法是从C\C++语言开始的,(获取其它语言更早就有了 :-) )

     在C\C++语言中,数字等于0表示false, 不等于0表示true, 下面的两个if判断代码都是合法的,但是含义却南辕北辙

// 1 赋值 + 判断
int count = -1;
if (count = read())
{
     ...
}

// 2 判断
int expectedCount = 20;
if (expectedCount == read())
{
     ...
}

  人总是会犯错误的,一个不小心,第二段代码就成了

int expectedCount = 20;
if (expectedCount = read()) // == 变成了 =
{
     ...
}

  为了防止这种低级错误,于是就有了编程规范。

int expectedCount = 20;
if (read() = expectedCount) // 直接编译错误,就避免了错误的产生
{
     ...
}

  所以在C、C++项目中有这样的编程规范是正确的。

 

但是在Java项目中,

Java 语言中布尔变量就只有true和false, 数字不能表示布尔.下面的代码编译器是直接报错的,所以就避免了低级错误的发生.

int expectedCount = 20;
if (expectedCount = read()) // 编译器直接报错
{
     ...
}

 所以在Java项目中,不需要 倒着写; 这样还会降低可读性,所以不应该 倒着写;

 

3
0
分享到:
评论
3 楼 CodingMouse 2010-05-06  
我很支持博主的这种说法!

前段时间还有人叫我 if (null == model) 这样写,我总觉得别扭。

而且博主的解释才让我想起在哪个网文上看到过相应的解释,的确,在Java语言中没必要写倒装句,会降低可读性,本来Java中就没有“非零即为真”的说法。
2 楼 稻-草 2009-11-02  
zzx0421 写道
有种特例:
if ("" == model)


这样可以不用null判断,
不过正确的方式是
if ("".equals(model))
1 楼 zzx0421 2009-11-02  
有种特例:
if ("" == model)

相关推荐

Global site tag (gtag.js) - Google Analytics