如何写长IF更漂亮?

时间:2011-03-24 13:08:20

标签: php

我有很长的时间:

if(rand(1, 100) == 22 && $smth < time() && 
$smths > 5 && $sxsxsx > 250 && 
!$_SESSION['false'])
{
    echo "wow, big if just happened!";
}

如何写得更“漂亮”?

9 个答案:

答案 0 :(得分:17)

我更喜欢在布尔运算符之前打破。

if(rand(1, 100) == 22
   && $smth < time()
   && $smths > 5
   && $sxsxsx > 250
   && !$_SESSION['false']
)

答案 1 :(得分:6)

我喜欢说明我的条件,并将它们分组,以明确其目的是什么。

$is22 = rand(1, 100) == 22;
$someTime = $smth < time() && $smths > 5;
$meetsSx = $sxsxsx > 250;
$inSession = !$_SESSION['false'];
if ($is22 && $someTime && $meetsSx && $inSession) {
     // do something
}

答案 2 :(得分:5)

$isSomethingValid = rand(1, 100) == 22
   && $smth < time()
   && $smths > 5
   && $sxsxsx > 250
   && !$_SESSION['false'];

if ($isSometingValid) {
    // do something
}

答案 3 :(得分:3)

根据我对相关的回答

这应该用Decompose Conditional重构,这意味着你应该将各个测试分成不同的函数。你应该摆脱神奇的数字和毫无意义的变量名称。我会举例说明如何为代码执行此操作,但代码是不可理解的。

答案 4 :(得分:2)

总是缩进封闭语句,而不是块的主体。你会写一个这样的函数:

function (reallylongparam, reallylongparam, reallylongparam,
        reallylongparam, reallylongparam) {
    doStuff()
}

所以你要写下这样的if语句:

if(rand(1, 100) == 22 && $smth < time() && $smths > 5
       && $sxsxsx > 250 && !$_SESSION['false']) {
    doStuff();
}

答案 5 :(得分:0)

可能

if(
    rand(1, 100) == 22 && 
    $smth < time() && 
    $smths > 5 && 
    $sxsxsx > 250 && 
    !$_SESSION['false']
) {
    echo "wow, big if just happened!";
}

欢呼声

答案 6 :(得分:0)

在支持代码时,使代码可读是一个非常重要的方面 - 其他人可能必须提供支持。

查看coding styles(如果必须,请搜索更多信息)。

就个人而言,我会像这样格式化该片段:

if  (
    rand(1, 100) == 22
    &&
    $smth < time()
    && 
    $smths > 5
    &&
    $sxsxsx > 250
    && 
    !$_SESSION['false']
    )
{
    echo "wow, big if just happened!";
}

答案 7 :(得分:0)

只需将布尔逻辑封装在单独的函数

答案 8 :(得分:0)

您还可以更容易阅读变量名称。