我膨胀我的编码与IF语句


Am I bloating my coding with IF statements?

我想知道,太多的IF语句会使编码膨胀,什么时候可以不使用它们?

这两个例子都是一样的,我是唯一一个编辑/使用脚本。如果不加IF语句,我是不是在教自己养成坏习惯?

if ($en['mm_place']) {
    $tmp = explode(",", $en['mm_place']);
    $en['mm_place'] = $tmp[0].", ".$tmp[1]." ".$tmp[2];
}

与…相同

$tmp = explode(",", $en['mm_place']);
$en['mm_place'] = $tmp[0].", ".$tmp[1]." ".$tmp[2];

编辑:使用@Francis Avila的例子,我想出了这个…

if ($en['mm_wmeet']) {
    $tmp = explode(",", $en['mm_wmeet']);
    for ($i = 0; $i < count($tmp); $i++) {
        $en['mm_wmeet'] = $tmp[$i];
    }
}

在这个特殊的例子中,它们是不一样的。

如果$en['mm_place']是空的,那么$tmp不会有三个元素,所以你的字符串结构将是假的。

实际上你需要的可能是:

if (!empty($en['mm_place'])) { // depending on whether you know if this is set and must be a string.
    $tmp = explode(',', $en['mm_place'], 3);
    if (count($tmp)===3) {
        $en['mm_place'] = "{$tmp[0]}, {$tmp[1]} {$tmp[2]}";
    }
}

运行PHP设置E_NOTICE,并以这样的方式编码,你不会得到任何通知。因为PHP有很多草率的错误特性,所以要安全、正确地使用它需要遵守大量的规则。通知将告诉您大多数不良做法。您最终可能会使用大量的if语句。

如果它们没有任何作用,那么是的,你在膨胀。

在这种情况下,在对数组元素进行操作之前检查它是否存在,您应该在代码中保留if语句。在这里,它只会在元素缺失时抛出一个通知,但在将来你肯定会有类似的代码,如果元素没有设置就会崩溃。

编辑:实际上这两个代码样本是不是相同的。如果$en['mm_place']为null或未设置,则第一个示例将保留它,而第二个示例将用", "
替换它。