2012-11-04 77 views
1

比另一個更可讀嗎?起初,我不喜歡false ===的方法,但隨着我越來越頻繁地看到它,我正在向它邁進。我很確定他們會返回相同的結果。

+0

我想這好像是說,如果'X = y'然後'Y = x' – JCOC611

+5

二是容易誤類型不會導致錯誤的分配。 –

+1

http://wiert.me/2010/05/25/yoda-conditions-from-stackoverflow-new-programming-jargon-you-coined/ – Dogbert

回答

6

我非常喜歡

false === $var 

即是因爲有時你只使用平等而不尋找身份。

在這種情況下,你寫

false == $var 

但有時你是不是在你的遊戲的頂部,可以寫

false = $var 

,這將給立即錯誤,並讓您修復的它馬上。

但是,如果鍵入

$var = false 

你最終擊敗你的頭撞牆了一個小時試圖弄清楚爲什麼你的腳本不工作的權利。

+0

使用體面的IDE修復了這個爭論。 –

+0

代碼應該可以獨立於IDE訪問 –

7

絕對沒有功能差異。

我通常比較喜歡首先將變量常數值秒。因爲這是有道理的(當你說出聲,你會說:「我測試的變量是假的?」或者「我測試虛假等於變量」?)

+1

+1,我喜歡你的「代碼和聲音一樣好」的願景 –

+0

如果你在if語句中使用了一個賦值語句,那麼現代IDE會提醒你,所以唯一使用這個常量的用例會迅速減少。 – Sven

+0

取決於你是否是「星球大戰」的粉絲:「如果虛假是價值......」 –

3

一個比我更好的軟件工程師教會了我這件事。長話短說,首先保持恆定是一種最佳做法,儘管它起初看起來很怪異。我說,這是一個最好的做法,因爲它導致的最可預測的結果:

$var = null; 

if (false === $var) { // NullPointerException is not thrown; only evaluates to "true" if the value "false" was assigned to $var 
    ... 
} 

if ($var === false { // NullPointerException will be thrown 
    ... 
} 

if (false = $var) {  // Parse Error 
    ... 
} 

if ($var = false) {  // the value false is assigned to $var 
    ... 
} 
+1

我們正在討論PHP,那裏沒有NullPointerExceptions。 – Sven

+0

但這個概念仍然適用。 –

相關問題