我早就IF:如何写更长的IF更漂亮?
if(rand(1, 100) == 22 && $smth < time() &&
$smths > 5 && $sxsxsx > 250 &&
!$_SESSION['false'])
{
echo "wow, big if just happened!";
}
怎么写更 “漂亮”?
我早就IF:如何写更长的IF更漂亮?
if(rand(1, 100) == 22 && $smth < time() &&
$smths > 5 && $sxsxsx > 250 &&
!$_SESSION['false'])
{
echo "wow, big if just happened!";
}
怎么写更 “漂亮”?
按照我的回答对相关
这应该用重构,这意味着你应该将单独的测试分成不同的功能。你应该摆脱魔术数字和无意义的变量名称。我会给你一个关于如何为你的代码做这个事情的例子,但是代码是不可理解的。
我更喜欢在布尔运算符之前打破。
if(rand(1, 100) == 22
&& $smth < time()
&& $smths > 5
&& $sxsxsx > 250
&& !$_SESSION['false']
)
而*格式*确实漂亮,它仍然是完全无法读取的意图和[应重构] 5419660 /如何对写长-IF-更漂亮/ 5419812#5419812)。 – Gordon 2011-03-24 13:31:04
我也会把每个条件放在它自己的括号内。这在视觉上是分开的,因为现在它只是一个运营商的汤。 – 2011-03-24 14:25:37
我喜欢列举我的条件并将它们分组,以清楚它们的目的是什么。
$is22 = rand(1, 100) == 22;
$someTime = $smth < time() && $smths > 5;
$meetsSx = $sxsxsx > 250;
$inSession = !$_SESSION['false'];
if ($is22 && $someTime && $meetsSx && $inSession) {
// do something
}
这种代价高昂的表达式即使第一个条件是错误的,也会得到计算。 – Papuass 2011-03-24 14:33:07
是的,但这些都不是太昂贵。 – 2011-03-24 15:06:04
可能
if(
rand(1, 100) == 22 &&
$smth < time() &&
$smths > 5 &&
$sxsxsx > 250 &&
!$_SESSION['false']
) {
echo "wow, big if just happened!";
}
欢呼
使您的代码可读性是一个非常重要的方面,当谈到支持你的代码 - 别人可能做到这一点支持。
看看coding styles(如果必须,请搜索更多信息)。
我个人格式化片断,像这样:
if (
rand(1, 100) == 22
&&
$smth < time()
&&
$smths > 5
&&
$sxsxsx > 250
&&
!$_SESSION['false']
)
{
echo "wow, big if just happened!";
}
$isSomethingValid = rand(1, 100) == 22
&& $smth < time()
&& $smths > 5
&& $sxsxsx > 250
&& !$_SESSION['false'];
if ($isSometingValid) {
// do something
}
这我喜欢,但唉,今天没有更多的投票... :) – 2011-03-24 13:17:15
我喜欢这个 – 2011-03-24 13:18:11
始终缩进封闭声明一个较块的身体多余的。你会写这样的函数:
function (reallylongparam, reallylongparam, reallylongparam,
reallylongparam, reallylongparam) {
doStuff()
}
,所以你会写你的if语句是这样的:
if(rand(1, 100) == 22 && $smth < time() && $smths > 5
&& $sxsxsx > 250 && !$_SESSION['false']) {
doStuff();
}
只是封装布尔逻辑在一个单独的功能
你也可以让你的变量名更容易阅读。
作为旁注,最好将!$ _ SESSION ['false']作为第一个测试。请记住,一旦遇到“停止”条件,PHP将停止查找。因此,把“容易”的测试或测试,可能返回False第一...现在你生成一个随机数和得到时间之前检查一个简单的变量... – Carpetsmoker 2011-03-24 13:14:04
//不适用 if(false){// do代码} 这是在99%的情况下是正确的:D – MiPnamic 2011-03-24 13:14:13