2011-04-03 35 views
2

我看到最近的一些例子,其中if語句的寫法如下:代碼風格=時要使用比較值第一次在「如果」聲明

if (false === $testValue) { 
    //do something 
} 

,而不是更普遍的:

if ($testValue === false) { 
    //do something 
} 

顯然這是一個風格問題,它對結果沒有任何影響,但我的問題是任何人都可以說爲什麼有人會使用這種風格以及它來自哪裏。

我用這種風格看過的代碼示例來自於認真優秀的程序員,所以我不認爲它是一種不好的風格。

+0

可能重複[爲什麼人們經常在C#中看到「null!= variable」而不是「variable!= null」?](http://stackoverflow.com/questions/271561/why-does-one-often -see-null-variable-instead-of-variable-null-in-c) – 2011-04-03 15:33:54

+0

相關http://stackoverflow.com/q/1264781/38206 – 2011-04-03 15:48:30

回答

3

它是如此,如果你不小心=(分配),而不是==(比較),編譯器抱怨不斷,不能分配給。

比較:

if (false = $testValue) { 
    // does not compile, cannot assign to constant 
} 

到:

if ($testValue = false) { 
    // assigns false to $testValue, never evaluates to true 
} 

前者無法編譯,後者則和有一個錯誤。

+0

然而在'.net'中**第二個也沒有被編譯* * – 2011-04-03 15:40:28

+0

非常感謝。我知道這是有原因的,但不知道它會是什麼。我在PHP中開發,所以這對我來說確實不是問題。 – David 2011-04-03 15:44:13

0

我見慣了C和C這樣的檢查++:

if (null == x) 

它的原因是,對==打錯=將毫無意義的編譯器,因爲分配給空或常數會一個錯誤。

0

在像C++(我不知道你使用有與===什麼語言),如果您有

if(x == 2),你把它寫if(x=2)(所以價值被分配了一個沒有檢查爲了平等),這不會導致編譯器錯誤(大多數編譯器今天會警告你),但是如果你寫if (2=x)而不是if(2==x)這將明確地產生一個錯誤。

0

這是爲了防止分配時,打算比較。 我不喜歡這種風格,但我從我們的印度開發者那裏看到很多,所以也許它正在那邊教書。

如果堅持'0警告,0錯誤'構建策略,並且任何使用此風格的人都不可能提供乾淨的構建代碼,那完全沒有必要。