我有很长的时间:
if(rand(1, 100) == 22 && $smth < time() &&
$smths > 5 && $sxsxsx > 250 &&
!$_SESSION['false'])
{
echo "wow, big if just happened!";
}
如何写得更“漂亮”?
答案 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)
您还可以更容易阅读变量名称。