【问题标题】:Null check coding standard [duplicate]空检查编码标准[重复]
【发布时间】:2013-03-20 08:52:51
【问题描述】:

我对空检查的编码标准有疑问。 我想知道两者的区别

if(a!=null)

if(null!=a)

哪一种更好,使用哪一种,为什么?

【问题讨论】:

    标签: java android syntax coding-style null


    【解决方案1】:

    两者在 Java 中是相同的,因为 if 中只能包含布尔表达式。这只是程序员的编码风格偏好,其中大多数使用 null != a

    null != a 是 Java、C++ 等编程语言的老惯例(称为 Yoda 条件)。
    由于写入if (a = null) 并意外地将null 分配给a 是有效的,因此首先写入null阻止此事故发生的警卫

    【讨论】:

    • 谢谢。我现在明白了,最后一部分真的很有帮助
    • 考虑删除“他们中的大多数使用 null != a”。最新的开发人员在他们的编程语言如何工作而不是盲目地应用以前的语言范式方面保持教育,他们将转而支持 Java 中的 (object != null) 格式。这是因为它读起来更合乎逻辑,而相反的模式在 Java 中绝对没有好处。因此,在 Java 中应该不鼓励使用“null first”模式,因为这绝对没有好处并且牺牲了可读性。
    • 投下反对票。能否请您发表评论。
    【解决方案2】:

    没有区别。但第一种更为常见。第二个也被称为“尤达条件”,因为它的“语法”不自然。

    有一次我在一个项目中工作,其中编码准则是使用if (null != a),因为他们认为开发人员更容易理解常量值必须始终排在第一位(就像在CONSTANT_VALUE.equals(variable) 中一样。那很好烦死我了。

    【讨论】:

    【解决方案3】:

    他们都是一样的。这取决于您的编码风格。

    【讨论】:

      【解决方案4】:

      从编译器的角度来看,它们完全相同。但是第一种形式更具可读性,所以我建议你使用那个形式。

      【讨论】:

        【解决方案5】:

        如果语句基于表达式的结果起作用,它们之间没有区别 所以你写if(a!=null)if(null!=a) 将产生真或假然后评估结果。

        所以写你喜欢的没关系

        【讨论】:

          【解决方案6】:

          他们都是一样的。虽然第一个变体很常见,但如果您知道第一个变量不为空,则第二个变体很有用

          例如 "some value".equals(your_variable) ,一些值可以是任何你知道不为空的值。当 your_variablenull 时,这将避免 NPE。

          String str = "somevalue"; 
          
          if(str != null && str.equals("somevalue")) { }
          
          if("somevalue".equals(str)) { }
          

          无论str 是否为null,这两个条件都相同。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-07-07
            • 2014-12-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多