2009-01-07 67 views
6

我發現了這個說法一個布爾值是一些舊的代碼,它花了我第二弄清楚......設置基於整數

IsTestActive = (TestStateID == 1 ? true : false); 

請糾正我,如果我錯了,但不這與這個一樣嗎?:

IsTestActive = (TestStateID == 1); 

如果是這樣,爲什麼你會想要使用第一個?哪一個更具可讀性? (我認爲後者,但我想看看其他人的看法。)

回答

32

是的,它完全一樣。

是的,後者更具可讀性。

+2

我只看到了2種類型的人使用前:那些誰缺乏對布爾邏輯的基本理解,或者認爲三元運算符非常酷的那些。 – 2009-01-07 16:46:12

+1

前者在理論上會有一分鐘的打擊,但如果你關心的是這樣的表現水平,那麼我懷疑你有更大的問題... – 2010-06-04 10:15:34

5
IsTestActive = (TestStateID == 1); 

肯定是更具可讀性。

可以充分的理由定義常量

ACTIVE = 1 

然後用

(TestStateID == ACTIVE) 

更換布爾變量IsTestActive方式的代碼現在,布爾IsTestActive的狀態將如果TestStateID的狀態更改而沒有更新布爾值,則會出錯。繞過布爾值並測試您所追蹤的信息的真實來源將消除此錯誤的可能性。

0

可讀性取決於您使用此構造的位置。我經常發現像

(TestStateID == 1 ? true : false) 

更具可讀性。

0

好了,我不知道其他的語言,但在PHP它更容易使用的類型轉換:

$IsTestActive = (boolean)$TestStateId;