一行if语句

Ern*_*ngs 3 if-statement

我最近与一位同事参与了一个涉及一行if语句的争论,并想看看stackoverflow的想法.

你觉得这个陈述应该写成:

if(condition)
{
     statement = new assignment;
}
Run Code Online (Sandbox Code Playgroud)

要么

if(condition)
    statement=new assignment;
Run Code Online (Sandbox Code Playgroud)

请为您的决定提供充分的理由.

Cem*_*ncu 20

如果你真的应该使用一行if

 if(condition) statement=new assignment;
Run Code Online (Sandbox Code Playgroud)

因为它的一行会更好,它应该包含一个操作.


Eri*_* J. 15

我总是使用封闭的大括号来降低某人(包括我自己)以后通过编辑if语句周围的代码引入错误的风险,而不必仔细注意哪些行属于if条件的一部分.

编辑:

这是一个实际的例子,如果我碰巧碰到了一些旧的代码:

if (form.validateUpload (messages, this))
    return getErrorOutcome (ctx, messages);
    if (LOG.isInfoEnabled ())
        LOG.info ("CREATING UPLOAD");
Run Code Online (Sandbox Code Playgroud)

注意两个"if"语句是如何在主代码块中但由于格式不佳,乍一看它们似乎是嵌套的.当然,任何"好"的程序员都应该很快看到发生了什么,但为什么会造成任何不必要的混淆?


Ala*_*lan 5

我一直是大括号的粉丝.如果有人要像这样修改oneline if语句:

if(condition) statement=new assignment;
Run Code Online (Sandbox Code Playgroud)

if(condition)
statement = new assignment;
another statement;
Run Code Online (Sandbox Code Playgroud)

你不会得到预期的行为.

使用大括号几乎可以确保如果某人修改了if语句,他们会确保将正确的语句放在正确的位置.

  • 如果有人这样做,他们显然不懂语言.这不属于基本能力吗?(诚​​意打算) (13认同)
  • 理解语言并制作错字与彼此无关.添加大括号*可确保*无论如何都会发生正确的行为. (6认同)
  • 也许.可能是一个初级程序员在第一次编写代码后很好地维护代码.也可能是一个糟糕的一天的高级程序员.为什么要为某人制造错误创造机会? (3认同)
  • @Alan - 我们不能嘲笑我们的代码.任何不了解这种基本语言行为的人都需要快速学习语言.他们显然不知道它,也不应该玩你的代码,他们引入的任何错误都可以a)很容易被有能力的人修复,并且b)潜在地教他们他们显然需要学习的东西.我使用单行风格,并且从未成为这个特定错误的牺牲品.它是如此普遍,并广泛警告反对"陷阱",任何人都不再适应它. (3认同)
  • 因此,您建议使用许多不必要的括号乱丢代码. (2认同)
  • 防御性编程就像防御性驾驶.你不需要它,直到你因为别人的错误而在悬崖上休息. (2认同)