关于编码标准、速度和效率,对于这种情况,以下哪一项是更好的编程实践?
function foo() {
if(bar) { return 0; }
if(baz) { return 0; }
if(qux) { return 0; }
}或
function foo() {
if(bar || baz || qux) { return 0; }
}我倾向于第一种,因为只有一个条件需要评估,因此会更快,但拥有多个return并不好……?
//编辑
我要应用的语言主要是PHP和Javascript,可能还有C++和Ruby。
发布于 2010-11-15 15:29:01
现在几乎每一种编程语言都是uses short-circuit evaluation for ||,这意味着这两个示例在控制流方面是等效的,因此性能也是相同的。
如果多个返回值分布在整个函数中,并且它们返回的内容不同,那么应该避免多个返回值,因为这会降低可读性。另一方面,让提前条件检测不可接受的条件并停止执行流是相当标准的:
function getFriendList()
{
if (! has_internet_connection() ) return null;
if (! is_logged_in() ) return null;
return server.getFriendList();
}发布于 2010-11-15 15:24:27
对于您的第二个示例,在大多数语言中,||是short-circuiting,因此只计算必要的条件。例如,如果bar的计算结果为true,则baz和qux都不会被计算。
知道了这一点,我可能会选择第二个例子。
发布于 2010-11-15 15:27:32
后者,但作为:
function foo()
{
var result = 1;
if(bar || baz || quz)
{
result = 0;
}
return result;
}使用"return“随意退出你的代码是一种糟糕的做法,而且会使调试成为一场噩梦--尤其是当你试图调试的是别人的代码时!控制流应始终在函数的底部退出!
https://stackoverflow.com/questions/4182241
复制相似问题