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

2022-08-30 22:40:55
if (condition) { /* do something */ }
else { /* do something */ }

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

我被告知第一个实例不是一个好主意。我不知道这是否真的是这种情况(或第二个情况);它不是缩短数量吗?还是因为它只会弄得一团糟?


答案 1

最佳做法是编写其他人可以轻松读取和更新的代码。

你的第一个表单是有问题的,因为它不遵循大多数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 */;

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

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

if (condition)
  // code A
else
  // code B
  // code C (added by another programmer)

在这个例子中,另一个程序员添加了,但忘记用大括号包装整个块。这将导致问题。您可以通过简单地将和块包裹在大括号中来防御这种情况。code Celseifelse


答案 2

如果一致性,我的偏好...所以:

if(...)
{
   statement 1;
   statement 2;
}
else
{
   statement 1;
   statement 2;
}

无异于:

if(...)
{
   statement 1;
}
else
{
   statement 1;
}

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

然而,其他人会看着我的代码,认为把{和}放进去是愚蠢的。他们有他们的理由,我有我的理由...我碰巧喜欢我的理由,而不是我喜欢他们的理由:-)


推荐