2010-08-27 65 views
0

我喜歡讓自己陷入這些荒謬的境地,在那裏我過度評估自己的編碼習慣,所以這裏就這樣!在PHP中評估一個布爾變量:應該使用If/Else還是Switch?

這個問題可能超越PHP(以及理智)。在評估布爾變量時,哪些是最佳實踐? (假設有太多//do stuff爲三元)

if ($bool) { 
    // do true stuff 
} else { 
    // do false stuff 
} 

switch ($bool) { 
    case true: 
     // do true stuff 
     break; 
    default: 
     // do false stuff 
     break; 
} 

我有興趣更在性能和/或特質方面的考慮比毯子之類的語句「if/else語句看起來更好」 「總是使用開關」,或者「做你認爲正確的事。」

也就是說,除非真的沒有區別。

+5

爲什麼人們如此肛門有關的性能這些東西? – BoltClock 2010-08-27 15:47:53

回答

10

使用if-else版本。這非常清楚,易於理解。

除非您有多個(> 2)值開啓,否則不應使用switch。在這種情況下,您無法使用開關(除了讓您的代碼不易理解)。

如果性能有任何差異,if-else版本會更快,但如果它們之間有任何差異,它實際上可以忽略不計。

這將是一個微型優化,如果有的話。不要這樣做。在向代碼引入任何「優化」之前,先對其進行分析並確定瓶頸。

+0

謝謝。對於什麼是值得的,我之後並沒有分析我的代碼,並且想到「我在想什麼會更快。」它更像是「首先寫條件時我應該做什麼」。 – Stephen 2010-08-27 15:52:44

0

以防萬一,你也應該檢查你的變量是一個真正的布爾(而不是「」,0,或空也可以評價爲false)

if($bool === false) { 
// false stuff 
} else if($bool === true) { 
// true stuff 
} else { 
/// WTF??? 
} 
+1

'else {throw FileNotFoundException}' – quantumSoup 2010-08-27 15:59:43