【问题标题】:Java one line if statement [duplicate]Java一行if语句[重复]
【发布时间】:2023-03-12 11:03:02
【问题描述】:

我在 java 中使用没有大括号的 if 条件,例如

if(somecondition)
//Only one line Business logic

但有些人总是告诉使用大括号,甚至是这样的一行语句

if(somecondition){
//Only one line Business logic 
}

根据 java 标准有什么更好的方法?

【问题讨论】:

  • 取决于.. 后者对我来说更具可读性
  • 这只是一个很好的编程习惯。
  • 我知道很多人因为没有使用牙套而死去。所以请记住始终使用牙套。
  • 这里已经有很多很好的答案了,但是这个链接解释得很好; braceless-if-considered-harmful
  • public void foo() { if (10/2 == 5) System.out.println("true"); }

标签: java


【解决方案1】:

这是一个品味问题。我会使用大括号或不使用大括号,而是将所有代码写在一行中以提高可读性。

你也可以考虑使用三元运算符

booleanExpression ? value1 : value2

【讨论】:

    【解决方案2】:

    除了@radai 的回答,如果你是一个真正的邪恶头脑,当你看到一个没有大括号的 if 时,你可以通过在 if 的同一行添加一个分号来做一些让你成为敌人的事情,但在该行的第 800 列(或其他内容)。

    喜欢

    if(condition) /*a loooot of whitespace*/ ;
        //Only one line Business logic that will get executed whatever is the condition
    

    这就是为什么我更喜欢使用大括号并推荐人们使用它们

    【讨论】:

    • 我将确保它在今天晚些时候投入生产
    • :) 你这个邪恶的主谋!
    • 这就是我在 IDE 中显示空白的原因。
    【解决方案3】:

    没有赤裸裸的 if 语句。你只是自找麻烦。始终使用 { }

    【讨论】:

      【解决方案4】:

      没有真正的“标准”。我更喜欢总是使用大括号,因为如果你不冒险添加一个看起来无辜的日志语句来改变你的代码

      if(somecondition)
      //Only one line Business logic
      

      进入

      if(somecondition)
      log.debug("condition was true");
      //Only one line Business logic
      

      然后事情就停止了:-)

      【讨论】:

      • +1 例如代码破坏。此外,像 checkstyle 这样的工具通常不允许使用裸 if 语句。
      【解决方案5】:

      检查错误或更新代码时最好使用大括号。

      想象一下。

      if(answer.equals("add"))
          addedValue += Scanner.readInt();
      

      但是你有一个新的要求是只加绝对值,所以你改成。

      if(answer.equals("add2))
          valueToBeAdded = Scanner.readInt();
          if(valueToBeAdded < 0) valueToBeAdded = - valueToBeAdded;
          addedValue += valueToBeAdded;
      

      这不是一个真正正确的算法,只是可能发生的一个例子。

      【讨论】:

        【解决方案6】:

        使用带大括号的 if 语句是 Java 标准的更好方法,因为它增加了可读性并减少了不必要的错误。

        【讨论】:

          【解决方案7】:

          这两个语句具有完全相同的效果,但我经常因缺少大括号而受到影响,我也总是评论说即使在 1 行语句周围也应该有大括号。这使得代码更容易维护,并且可以省去很多麻烦。我的经验表明,一行 if 语句通常会在以后的迭代中变成多行语句,所以你第一次不写两个 { 所节省的东西,你会在以后给出。

          【讨论】:

            【解决方案8】:

            根据 java 标准大括号更好,因为如果它们不存在,编译器必须解决更多问题,并且还会出现性能问题。

            【讨论】:

            • 性能问题?你的意思是编译所花费的额外时间?
            • 是的,因为如果没有大括号,编译器只需要考虑语句中的一行
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-06
            • 1970-01-01
            • 2016-11-08
            • 1970-01-01
            • 2011-06-09
            • 2017-02-06
            相关资源
            最近更新 更多