是单行if语句还是if语句没有括号不好的做法?

unr*_*ity 17 php c coding-style

if (condition) { /* do something */ }
else { /* do something */ }

if (condition)
    /* do something */
else
    /* do something */
Run Code Online (Sandbox Code Playgroud)

有人告诉我,第一个例子并不是一个好主意.我不知道这是否真的是这种情况(或者对于第二种情况); 是不是缩短了打字数量?或者是因为它只是弄得一团糟?

Ron*_*era 34

最佳实践是编写其他人可以轻松阅读和更新的代码.

您的第一个表单有问题,因为它不遵循大多数PHP开发人员习惯的表单:

if (condition) {
  // code
} else {
  // code
}

// ... or ...

if (condition)
{
  // code
}
else
{
  // code
}

// ... or ...

if (condition) { /* short code */ } else { /* short code */ }

// ... or ...

condition ? /* short code */ : /* short code */;
Run Code Online (Sandbox Code Playgroud)

请注意,这完全是关于标准做法,并不一定有意义 - 它只是关于其他开发人员习惯看到的内容.

更重要的是,你的第二种形式并不是那么好,因为它使另一个程序员很容易犯这个错误:

if (condition)
  // code A
else
  // code B
  // code C (added by another programmer)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,另一个程序员添加了code C,但忘了将整个else块包装在大括号中.这会引起问题.您可以通过简单地将您的ifelse块包裹在大括号中来抵御这种情况.

  • 我不同意第2点.只有一个非常可怕的程序员会做一些像没有括号添加代码C的东西. (4认同)
  • @Beska或者只是一个非常糟糕的程序员,因为一个优秀的程序员在他们找不到结束支撑时会接受它. (3认同)
  • @rlbond:或者是一个错误的优秀程序员.众所周知,这种情况会发生. (2认同)

Tof*_*eer 8

我的偏好是否一致......所以:

if(...)
{
   statement 1;
   statement 2;
}
else
{
   statement 1;
   statement 2;
}
Run Code Online (Sandbox Code Playgroud)

没有什么不同于:

if(...)
{
   statement 1;
}
else
{
   statement 1;
}
Run Code Online (Sandbox Code Playgroud)

所以我总是使用它们,因为它是一致的,它避免了以后忘记添加它们的问题.

然而,其他人会查看我的代码并认为放入{和}是愚蠢的.他们有他们的理由,我有我的...我碰巧喜欢我的理由而不是我喜欢他们的原因:-)


jer*_*ear 5

通常不可读的代码是一种不好的做法.单行更有效地输入并保存行号,但是从现在开始一年或者在扫描错误时再回到它,这将使它变得更加困难.

在我看来,是的,单行if语句是不好的做法.

计算机并不是真正关心(据我所知),但是你应该总是编写你的代码,它将由一个知道你住在哪里的连环杀手来维护.

可读!轻松自我辨别.