空=!对象与对象=!空值

时间:2013-07-25 23:35:58

标签: object if-statement conditional

这个问题仅仅是做之间的比较:

if(Null != Object){
   /// code here.
}


if(Object != Null ){
   /// code here.
}

如果一个条件陈述优于另一个条件陈述,任何人都可以插话吗?它是否依赖于案例?

我一直使用Object != Null,但我今天听说过Null != Object,并想知道它的不同之处?

语言不可知。

- 感谢所有人的好评!

4 个答案:

答案 0 :(得分:1)

它们在逻辑上是相同的。

我认识那些喜欢Null != Object的人,他们最常见的原因是:

  • 使用=代替==的可能性较小,因为Null = <anything>会导致编译错误。
  • 它独特而酷。

苍蝇的第一个原因(尽管我认为它不值得编码可读性),但我非常反对第二个原因。我个人更喜欢Object != Null的可读性。它与所表达的逻辑的实际口头形式非常接近。 (请记住,代码主要是由人类阅读,并且只有次要目的由机器执行。)

答案 1 :(得分:1)

有些人喜欢使用Null != Object,因为它对拼写错误更安全。使用另一种形式,您编写Object = Null的风险略高,这可能是一个严重且难以注意的错误。

其他人更喜欢Object != Null,因为它更自然地用英语阅读。

但它完全是风格 - 两种形式在功能上是等价的。

答案 2 :(得分:1)

原因实际上是因为C,并且通常处理等于运算符而不是不等运算符。这是因为在C中,你有===,它们都做了完全不同的事情。问题是很容易将一个误认为另一个,所以你可能会得到以下代码:

int *i = malloc(sizeof(int));
if (i=NULL) {
    ... do nothing?
} else {
    free(i);
}

这是一个很难错过的错误,但是这段代码应该使用==运算符。问题是编译器认为这是正确的,你的代码中有一个错误。

除了样式之外,我不知道使用不等式运算符执行此操作的原因。

答案 3 :(得分:0)

还有两件事需要比较。