Object 空=!对象vs对象=!无效的

Object 空=!对象vs对象=!无效的,object,if-statement,conditional,Object,If Statement,Conditional,这个问题仅仅是一个比较: if(Null != Object){ /// code here. } if(Object != Null ){ /// code here. } 如果一个条件语句优于另一个,有人能插话吗?是否视情况而定 我一直使用Object!=空,但我听说过空对象并想知道它的区别 语言不可知论者 -- 谢谢大家的光临 两件事仍然需要比较。两件事仍然需要比较。它们在逻辑上是相同的 我认识一些喜欢Null!=对象,它们给出的最常见的原因是: 如果使用=而不是=,则

这个问题仅仅是一个比较:

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


if(Object != Null ){
   /// code here.
}
如果一个条件语句优于另一个,有人能插话吗?是否视情况而定

我一直使用
Object!=空
,但我听说过空对象并想知道它的区别

语言不可知论者

--
谢谢大家的光临

两件事仍然需要比较。

两件事仍然需要比较。

它们在逻辑上是相同的

我认识一些喜欢
Null!=对象,它们给出的最常见的原因是:

  • 如果使用
    =
    而不是
    =
    ,则不太可能出现错误,因为
    Null=
    将导致编译器错误
  • 它很独特,很酷

第一个原因有点像苍蝇(虽然我认为它不值得代码可读性的提高),但我非常反对第二个原因。我个人更喜欢
对象!=空
,以确保可读性。它相当接近于所表达的逻辑的实际口语形式。(请记住,编写代码主要是为了让人阅读,而只有次要目的是让机器执行。)

它们在逻辑上是相同的

我认识一些喜欢
Null!=对象,它们给出的最常见的原因是:

  • 如果使用
    =
    而不是
    =
    ,则不太可能出现错误,因为
    Null=
    将导致编译器错误
  • 它很独特,很酷

第一个原因有点像苍蝇(虽然我认为它不值得代码可读性的提高),但我非常反对第二个原因。我个人更喜欢
对象!=空
,以确保可读性。它相当接近于所表达的逻辑的实际口语形式。(请记住,编写代码主要是为了让人阅读,而只有次要目的是让机器执行。)

有些人喜欢使用
Null!=对象
,因为这样可以更安全地防止输入错误。对于另一种形式,您编写
Object=Null
的风险稍高,这可能是一个严重且难以注意到的错误

其他人更喜欢
对象!=Null
,因为它的英文读起来更自然


但这完全是一种风格——这两种形式在功能上是等价的。

有些人喜欢使用
Null!=对象
,因为这样可以更安全地防止输入错误。对于另一种形式,您编写
Object=Null
的风险稍高,这可能是一个严重且难以注意到的错误

其他人更喜欢
对象!=Null
,因为它的英文读起来更自然


但这完全是一种风格——这两种形式在功能上是等价的。

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

int *i = malloc(sizeof(int));
if (i=NULL) {
    ... do nothing?
} else {
    free(i);
}
这是一个很难忽略的错误,但是此代码应该使用
=
操作符。问题是编译器认为这是正确的,而您的代码中有一个bug


除了style之外,我不知道为什么要用不等式运算符来做这件事。

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

int *i = malloc(sizeof(int));
if (i=NULL) {
    ... do nothing?
} else {
    free(i);
}
这是一个很难忽略的错误,但是此代码应该使用
=
操作符。问题是编译器认为这是正确的,而您的代码中有一个bug


除了style之外,我不知道用不等式运算符这样做的原因。

它们是一样的…@McGarnagle不:是一样的。这就是所谓的尤达状态,它们是一样的…@McGarnagle不:是一样的。这叫做尤达病