首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳实践: if逻辑控制

问最佳实践: if逻辑控制
EN

Stack Overflow用户
提问于 2010-11-15 15:22:20
回答 7查看 2K关注 0票数 2

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

代码语言:javascript
复制
function foo() {
  if(bar)   { return 0; }
  if(baz)   { return 0; }
  if(qux)   { return 0; }
}

或

代码语言:javascript
复制
function foo() {
  if(bar || baz || qux) { return 0; }
}

我倾向于第一种,因为只有一个条件需要评估,因此会更快,但拥有多个return并不好……?

//编辑

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-11-15 15:29:01

现在几乎每一种编程语言都是uses short-circuit evaluation for ||,这意味着这两个示例在控制流方面是等效的,因此性能也是相同的。

如果多个返回值分布在整个函数中,并且它们返回的内容不同,那么应该避免多个返回值,因为这会降低可读性。另一方面,让提前条件检测不可接受的条件并停止执行流是相当标准的:

代码语言:javascript
复制
function getFriendList() 
{
  if (! has_internet_connection() ) return null;
  if (! is_logged_in() ) return null;

  return server.getFriendList();
}
票数 6
EN

Stack Overflow用户

发布于 2010-11-15 15:24:27

对于您的第二个示例,在大多数语言中,||是short-circuiting,因此只计算必要的条件。例如,如果bar的计算结果为true,则baz和qux都不会被计算。

知道了这一点,我可能会选择第二个例子。

票数 3
EN

Stack Overflow用户

发布于 2010-11-15 15:27:32

后者,但作为:

代码语言:javascript
复制
function foo()
{

   var result = 1;

   if(bar || baz || quz)
   {
       result = 0;
   }

   return result;
}

使用"return“随意退出你的代码是一种糟糕的做法,而且会使调试成为一场噩梦--尤其是当你试图调试的是别人的代码时!控制流应始终在函数的底部退出!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4182241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档