【问题标题】:Cleaner way to write code snippet编写代码片段的更简洁的方法
【发布时间】:2018-06-05 12:54:38
【问题描述】:

我是java新手,想知道有没有更简单的写法

if(a == 10 || b == 10){
    //stuff
}

在我看来,我尝试过这样的事情:

if(a||b == 10){
    //stuff
}

因为 IMO 很直观,但这不是一回事。

【问题讨论】:

  • 不,你不能让它更短。
  • 如果if下的语句为一行,可以去掉大括号
  • @AniketSahrawat 我强烈建议不要这样做,即使它是有效的代码。
  • 在Java9你可以写if (Set.of(a,b).contains(10))

标签: java if-statement


【解决方案1】:

不是更短,而是更“直观”的可读性:

boolean condA = (a == 10);
boolean condB = (b == 10);

if(condA || condA){
    //stuff
}

始终牢记,目标不是编写最短可能的代码,而是最好的可维护性代码。

【讨论】:

    【解决方案2】:

    不,我们不能这样做,因为在 java 的情况下,没有像这样比较变量的选项。
    连你都写不出来

    if(a||b){ //staff } 
    

    但是如果你会写那么你会得到这个错误信息

    错误:二元运算符“||”的操作数类型错误

    【讨论】:

      【解决方案3】:

      是的,事实证明没有办法让它更短。

      【讨论】:

        【解决方案4】:

        如果您只是比较几个值,那么您最好继续当前的方法,因为没有任何东西可以缩短它。但是,如果您多次重复自己,那么您可以创建一个辅助函数来为您完成这项工作。

        static boolean anyMatch(int comparisonValue, int... elements){
                return Arrays.stream(elements)
                             .anyMatch(e -> e == comparisonValue);
        }
        

        然后这样称呼它:

        if(anyMatch(10, a, b)){ ... }
        

        【讨论】:

          【解决方案5】:

          这不会像那样工作。您正在根据一个值检查两个变量的值,这最终是两个检查,if(a == 10 || b == 10)

          但是,您可以将此检查修改为以下代码:

          if(Arrays.asList(a,b).contains(10))
          

          它会产生相同的行为,但它既不短也不易于阅读。

          【讨论】:

          • 你确定Arrays.asList()的性能比||好吗?
          • @AniketSahrawat 当然不是。这太糟糕了。它创建一个List,然后contains 检查每个元素。
          • 为什么这个答案没有投票?毫无疑问,与logicalOR 相比,这两个答案都存在性能问题,但它的语法更短。
          猜你喜欢
          • 1970-01-01
          • 2012-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多