null == object而不是object == null

时间:2013-06-20 11:47:52

标签: language-agnostic null

我在一些地方看到过这种情况,人们使用

if(null == myInstance)

而不是

if(myInstance == null)

前者只是风格问题还是在后者(更直观,在我看来)后面有任何性能影响?

2 个答案:

答案 0 :(得分:5)

实际上取决于您使用的语言。

在只有bool类型被识别为if内的条件的语言中,if (myinstance == null)是首选,因为它更自然地读取。

在可以处理其他类型(隐式转换等)作为条件的语言中,通常首选if (null == myinstance)形式。例如,考虑C.在C中,int s和指针在if内有效。此外,赋值被视为表达式。因此,如果错误地写入if (myinstance = NULL),编译器将不会将其检测为错误。众所周知,这是一种流行的漏洞来源,因此建议使用不太可读但更可靠的变体。实际上,一些现代编译器会在ifwhile等)内分配警告,而不是错误:毕竟,它是C中的有效表达式。

答案 1 :(得分:1)

您这样做,以避免错误地将myInstance的值设置为null

拼写错误的示例:

if (null = myConstant) // no problem here, just won't compile


if (myConstant = null) // not good. Will compile anyway.

总的来说,由于这个原因,很多开发人员会把等式的常数部分放在第一位。

以这种方式编写条件检查也称为 Yoda条件