最佳实践:如果是逻辑控制

Ben*_*Ben 2 if-statement coding-style

关于编码标准,速度和效率,对于这种情况,以下哪一项是更好的编程实践?

function foo() {
  if(bar)   { return 0; }
  if(baz)   { return 0; }
  if(qux)   { return 0; }
}
Run Code Online (Sandbox Code Playgroud)

要么

function foo() {
  if(bar || baz || qux) { return 0; }
}
Run Code Online (Sandbox Code Playgroud)

我倾向于第一个,因为只需要评估一个条件因此会更快,但是多个returns不好......?

//编辑

我要应用的语言主要是PHP和Javascript,可能是C++和Ruby.

Vic*_*let 6

今天几乎每种编程语言都使用短路评估||,这意味着这两个例子在控制流程和性能方面是等价的.

如果它们遍布整个函数并且它们返回不同的东西,那么确实应该避免多次返回,因为这会降低可读性.另一方面,具有检测不可接受的条件并停止执行流程的早期条件是相当标准的:

function getFriendList() 
{
  if (! has_internet_connection() ) return null;
  if (! is_logged_in() ) return null;

  return server.getFriendList();
}
Run Code Online (Sandbox Code Playgroud)