【问题标题】:Are there any disadvantages of writing !string.isEmpty()?写 !string.isEmpty() 有什么缺点吗?
【发布时间】:2011-11-05 14:30:57
【问题描述】:

在 Java 代码的 if 语句中,我经常读到类似 if(string != null && string.isEmpty() == false) 的内容。我习惯写if(string != null && !string.isEmpty())

使用!string.isEmpty()有什么缺点吗?

【问题讨论】:

    标签: java string coding-style if-statement


    【解决方案1】:

    我想不出任何缺点。这只是个人编码风格和偏好的问题。我个人也更喜欢if(!string.isEmpty())

    【讨论】:

      【解决方案2】:

      恕我直言,我找到了!更难阅读。你必须在心里记下接下来要发生的事情需要被否定。 if(string.isEmpty() == false), 不需要任何心理笔记。因此,我认为它不太可能被误解。

      【讨论】:

      • ... == false 是没有语法高亮的环境的好方法。
      【解决方案3】:

      在行为方面

      if(string != null && string.isEmpty() == false)
      

      if(string != null && !string.isEmpty())
      

      显然是相同的。我更喜欢后者,只是因为它更简洁一些。在可能的情况下,我更喜欢积极表达条件,可惜没有string.isNotEmpty()方法

      所以一般来说,当我想检查一个字符串是 null 还是空(以 null 安全的方式)时,我会使用:

      StringUtils.isNotBlank(string)
      

      这个 StringUtils 类来自 Apache commons lang 库,但如果您的类路径中还没有它并且不想添加它,您可以轻松编写自己的类。

      【讨论】:

      • 我省略了空检查,因为我认为这无关紧要。但现在我更新了我的问题。顺便说一句:我正在考虑使用 StringUtils。
      • 您能否更新您的答案以适合我的问题编辑? (我添加了空处理)。我试图编辑您的答案,但未被接受
      • 我再次编辑了它(我昨天的编辑没有被接受,或者已经丢失)
      【解决方案4】:

      以下是来自java.lang.String implementation的sn-p

      1286       public boolean isEmpty() {
      1287           return 0 == count;
      1288       }
      

      isEmpty() 检查存储在私有字段 count 中的字符串中的符号数是否为 0。使用 if(string.isEmpty() == false)if(!string.isEmpty()) 无关紧要,更多的是个人编码偏好。
      但是,如果还需要对String进行null检查,可以检查Apache Commons-LangStringUtils.isEmpty(..)

      【讨论】:

        猜你喜欢
        • 2016-05-23
        • 2011-04-26
        • 2011-02-28
        • 2011-02-27
        • 2015-01-01
        • 2017-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多