如果我希望我的代码有效,哪种方法更好

时间:2014-01-07 09:12:58

标签: php coding-efficiency

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

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

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中,我看到编译器混合代码并尽可能消除所有空格并将变量名称更改为单个字母(例如thisnamea)等等。根据我的理解,他们这样做javascript文件的大小非常小,当页面要求时,加载时间不会有问题。

php文件怎么样?如果我希望我的代码有效,上面哪个代码更好?为什么? AND javascript场景是否适用于php?感谢

2 个答案:

答案 0 :(得分:1)

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

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

或者,您可能希望抛出特定的异常或返回特定的错误代码,而不是仅返回false来确切地指出错误。

答案 1 :(得分: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;
}

等等。