空检查编码标准
关于空检查的编码标准我有疑问。 我想知道它们之间的区别
if(a!=null)
和
if(null!=a)
哪一个更好,哪一个使用,为什么?
两者在Java中都是相同的,因为只有布尔表达式可以在if中。 这只是程序员的编码风格偏好,大多数都使用null != a
。
null != a
是Java,C ++等编程语言中的一种古老习惯 (称为Yoda Conditions )。
因为写入if (a = null)
并且意外地将null
分配给a
所以写入null
是有效的,所以首先是一个防止此事故发生的警卫 。
没有区别。 但第一种更常见。 第二个也被称为“尤达条件”,因为它不自然的“语法”。
一旦我在一个编程指南要使用的项目中工作if (null != a)
因为他们认为开发人员更容易理解常量值必须首先出现(如CONSTANT_VALUE.equals(variable)
那对我来说太烦人了。
他们都是一样的。 这取决于你的编码风格。
从编译器的角度来看,它们完全相同。 但是第一种forms更具可读性,所以我建议你使用那种forms。
如果语句基于表达式的结果工作,那么它们之间没有区别所以你写if(a!=null)
或if(null!=a)
将产生true或false然后评估结果。
所以你写下你喜欢的东西并不重要
它们都是一样的。 虽然第一个变体是常见的,但如果您知道第一个变量不为null,则第二个变体很有用
示例"some value".equals(your_variable)
,某些值可以是您知道的非null值。 当your_variable
为null
时,这将避免NPE。
String str = "somevalue"; if(str != null && str.equals("somevalue")) { } if("somevalue".equals(str)) { }
如果str
为null
则两个条件都相同。