0

当我开始学习编码时,我没有上学。我看书和浏览网页。而这个问题真的没有出现在我读过的任何书中。如果我在网上搜索它,我不知道要搜索什么,所以如果这对你来说很明显,我提前道歉,因为这对我来说不是。

无论如何,如果我希望我的代码高效,这种方法会更好:

if($a == $b && $a <= $c && strlen($a) > 100 && functionA($a) && functionC($c)){
     //win
} else {
    //fail
}

或者

这是否更好:

if($a != $b){
    //fail
} elseif($a > $c) {
    //fail
} elseif(strlen($a) < 100){
    //fail
} elseif(!functionA($a)){
    //fail
} elseif(!functionC($c)){
    //fail
} else {
    //win
}

在 javascript 中,我看到编译器将代码混搭并尽可能消除所有空格并将变量名称更改为单个字母(例如thisnameto a)等。据我了解,他们这样做是为了使 javascript 文件的大小非常小,以至于当页面要求它,加载时间不会成为问题。

但是对于php文件呢?如果我希望我的代码高效,上面的哪个代码更好?为什么?javascript 场景是否适用于 php?谢谢

4

2 回答 2

1

我想说可读性是最重要的因素,无论如何你都不会赢得任何速度 - 编译器非常聪明。

if (passesRequirements($a, $c)) {
    //win
}

function passesRequirements($a, $b)
{
    return isNotEqual($a, $b)
        && isLargerThan($a, $b)
        && isShorterThan($a, 100);
}

function isShorterThan($str, $amount)
{
    return strlen($str) < $amount;
}

等等。

于 2014-01-07T09:29:20.143 回答
1

正如评论中所指出的,效率是您最不关心的问题,可读性和可维护性更为重要。通常,您会使用早期失败的方法来实现此目的:

function myTest($a, $b, $c) {
    if ($a == $b) {
        return false;
    }
    if ($c < 10) {
        return false;
    }
    if (...) {
        return false;
    }
    ...
    return true;
}

或者,您可能希望抛出特定的异常或返回特定的错误代码,而不是仅仅返回false以表明究竟出了什么问题。

于 2014-01-07T09:21:53.633 回答