14

关于 PHP 函数,如果您不需要函数返回 BOOLEAN 或 STRING,那么return在条件失败时声明 a 与让函数自动返回之间有区别吗?

例如,

两者之间是否有任何内部差异:

function check() {
    if( 5 > $v ) {
        die('yes');
    }
}

function check() {
    if( 5 > $v ) {
        die('yes');
    }
    else {
        return;
    }
}

显然,他们似乎在“IF”条件失败时做同样的事情,但在内部,为了内存、安全性、可用性或整体最佳实践,一个比另一个更好?

4

4 回答 4

10

这些陈述在内存或安全性方面没有有效的、真实的差异。无,nada,zip,零。它们完全相同。保存额外操作码所需的几个字节无关紧要,如果您关心解析、标记和解释操作码所花费的时间,那么您就是在进行微优化

在“可用性”方面,前者更为清晰。else从那里回来很傻。如果我在实时代码中看到这一点,我会假设编写它的人在这样做时分心并清理它。

于 2012-12-19T02:30:47.983 回答
1

return 在你的第二个例子中什么都不做,而不是增加解析器和编译器的工作让你的读者困惑它的规则是什么在代码中添加不必要的行并增加应用程序的总大小,最后它没有任何价值!

于 2012-12-19T02:40:35.030 回答
0

我更喜欢第一个。它的装配线更少,因此效率略高(二进制大小而不是速度)。无论函数中包含什么,所有函数都会在函数完成时定义一个返回地址,因此添加额外的 return 只会导致它添加额外的指令。

我发现它更易读,也更常见。

于 2012-12-19T02:30:37.270 回答
0

我认为前者更容易阅读,而后者只是增加了预处理器的开销(并且文件大小膨胀)。然而,它也清楚地表明该函数不会返回任何特定的东西(尽管函数名称或注释可以比仅用于此目的的逻辑分支更容易做到这一点。

我意识到并欣赏这些例子,但我会坚持简短而简洁。

[/恕我直言]

于 2012-12-19T02:31:50.617 回答