我在一些地方看到过这种情况,人们使用
if(null == myInstance)
而不是
if(myInstance == null)
前者只是风格问题还是在后者(更直观,在我看来)后面有任何性能影响?
答案 0 :(得分:5)
实际上取决于您使用的语言。
在只有bool
类型被识别为if
内的条件的语言中,if (myinstance == null)
是首选,因为它更自然地读取。
在可以处理其他类型(隐式转换等)作为条件的语言中,通常首选if (null == myinstance)
形式。例如,考虑C.在C中,int
s和指针在if内有效。此外,赋值被视为表达式。因此,如果错误地写入if (myinstance = NULL)
,编译器将不会将其检测为错误。众所周知,这是一种流行的漏洞来源,因此建议使用不太可读但更可靠的变体。实际上,一些现代编译器会在if
(while
等)内分配警告,而不是错误:毕竟,它是C中的有效表达式。
答案 1 :(得分:1)
您这样做,以避免错误地将myInstance
的值设置为null
。
拼写错误的示例:
if (null = myConstant) // no problem here, just won't compile
if (myConstant = null) // not good. Will compile anyway.
总的来说,由于这个原因,很多开发人员会把等式的常数部分放在第一位。
以这种方式编写条件检查也称为 Yoda条件 。