2014-01-07 51 views
0

當我開始學習代碼時,我沒有去過學校。我讀書和瀏覽網頁。這個問題真的沒有出現在我讀過的任何書中。如果我在網上搜索,我不知道要搜索什麼,所以我提前道歉,如果這是顯而易見的,因爲它不是我。如果我希望我的代碼更高效,哪種方法更好

反正是這種方法更好,如果我想我的代碼是有效的:

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

OR

是這更好:

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?謝謝

+4

您不應該關注代碼的這個級別的效率,因爲它的微觀優化:可讀性在現實世界中更重要 –

+1

PhP是一種編程語言......我建議您使用變量名將顯示它們的「內容」。這樣,您可以(稍後)不需要重新研究您的所有網絡應用程序,以瞭解其中的內容。這就是說我認爲即使是一個JavaScript文件也需要這樣做,不要使用1個字母的變量,而是使用變量來澄清某些事情。恕我直言。 – Goikiu

+0

@MarkBaker所以上面的代碼沒有那麼大的區別? –

回答

1

正如在評論中已經指出的那樣,效率是您最擔心的問題,可讀性和可維護性更重要。通常你會使用一個失敗早的方法來實現這一目標:

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

或者,您可能希望拋出特定的異常或返回而不是僅僅返回false信號究竟什麼是錯的特定錯誤代碼。

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; 
} 

等等。