使用多个步骤来完成if测试的好处是什么


What is the benefit of using multiple steps to complete an if test?

使用多个步骤测试变量的好处是什么:

$VarLength = strlen($message);
if ($VarLength > 10)
    echo "Over Ten";

而不是将整个过程推进到一个if语句中:

if ( strlen($message) > 10 )
    echo "Over Ten";

我想知道这些好处是否超出了代码样式,以及重用(在上面的示例中)strlen结果的能力。

从技术上讲,您的问题实际上不可能得到回答,因此这与其说是一个答案,不如说是一条评论。

当您更改代码时,除了代码样式和结果重用之外,还有其他好处。

您可能想用其他函数替换strlen()函数,但在这样做时不想用if子句编辑行。例如,为了防止错误或副作用。可能是一个好处,但它在某种程度上取决于代码风格。因此,当你把编码风格排除在问题之外时,很难回答,因为这个领域涉及到你如何才能/应该/想要/必须编写代码。

如果函数的结果将被多次使用,则应将其缓存在变量中,以避免浪费资源来重新计算其结果

如果函数结果不会被重复使用,那么在if条件中使用函数返回值之前,通过将函数返回值存储在变量中来清楚地描述发生了什么,这可能只是代码可读性的问题。

此外,就可读性而言,即使@AlexHowansky提到PHP语法规则没有强制要求,也应该始终使用大括号。

大部分都是代码样式。就结果的快速性而言,变化不大。如果您使用$varLenght不止一次,那么您将保存对函数的调用以获取长度。但即便如此,时差还是非常小的(我甚至想说不引人注意)。

但是:在开发任何应用程序时,你必须记住,你可能不是唯一一个对其进行更改的人,或者你可能对你正在编写的确切程序不那么新鲜和最新。因此,代码越干净,维护就越容易,这就是你节省大量时间的地方。

最佳实践要求函数的调用最少。在您的情况下,这种做法并不违反规则,但发现以下代码并不罕见:

if ( strlen($message) > 100 )
    echo "Over Ten";
else if ( strlen($message) > 20 )
    echo "Over Ten";
else if ( strlen($message) > 10 )
    echo "Over Ten";
...

一种常见的预防措施是始终将函数结果分配给一个变量以保持一致性。

我不会说除了您已经提到的重用案例之外还有任何好处。您的后一种情况可读性更强,可能更快,而且可能不那么占用内存。然而,我强烈建议始终使用大括号,即使您的条件只有一行:

if (condition) {
    statement;
}