2013-02-20 87 views
1

在我編程的短期工作中(僅僅是一名在實習工作的學生),我注意到當涉及到IF語句時,有兩種不同的方式。使用IF語句時是否存在正確或錯誤的練習:if(foo)或if(foo == true)?

如果我們把foo作爲一個布爾值:

if(foo) 
{ 
    //do stuff 
} 

這是我首選的做用IF語句打交道時,如果我在尋找的東西的方式錯誤我用:

if(!foo) 
{ 
    //do more stuff 
} 

但是,當有些人看到這一點時,他們會揚起眉毛,這表明我可能會陷入壞習慣。但我想知道,這種方式還是「典型」方式有什麼區別?

if(foo == true) 
{ 
    //do a bit more stuff 
} 

我是否陷入了新程序員的共同陷阱?或者沒有差別(至少一個引人注目的)

+3

「當有人看到這個時,他們揚起眉毛......」真的嗎?我會在'== true'版本中提出一個問題。 – 2013-02-20 09:30:37

+0

這就是我的想法!我一直認爲按照我通常的方式做這件事更有意義,在大學裏我們展示了==真實的方式,但我也認爲第一種方式看起來更漂亮。 – Phoenix 2013-02-20 09:32:50

回答

2

我從不寫==真或==假。在我看來,它違背了if-sentence的意思。

如果是基本的話:如果一個布爾表達式是真的,那麼做點什麼。一個布爾表達式本身就是一個布爾表達式,爲什麼要包裝呢?

所以在我看來,使用== true的那些是壞習慣。因爲他們對語言的工作方式不瞭解。

想到這些「允許」的方式,如果(美孚),如果(!美孚)寫:

if (Foo == true) //If Foo is the same as true 
if (Foo != true //If Foo is not the same as true 
if (Foo != false) //if Foo is not the same as false 
if (Foo == false) //If Foo is the same as false 
if (Foo) //If Foo 
if (!Foo) //If not Foo 

使用==和=與布爾竟採取新措施犯錯誤的時候都和編程閱讀代碼。

布爾和!布爾很難誤讀。

+0

「允許」的方式列表很好地說明了這個問題。 – 2013-02-20 09:42:08

+0

這是一個很好的答案,現在我確信我是一個正確的人! – Phoenix 2013-02-20 10:26:53

1

我猜做自己的方式在大多數語言

if(foo) 
{ 
    //do stuff 
} 

例如推薦的Python PEP8

不要使用==比較布爾值爲True或False。

Yes: if greeting: 
No: if greeting == True: 
Worse: if greeting is True: 

Code Conventions for the Java Programming Language 7

的另一個例子的if-else類的語句應該有如下形式:

if (condition) { 
    statements; 
} 

就在小提示: 說起條件檢查,這裏的我幾周前聽到的好的提示 如果您比較像C這樣的實例,例如

if(variable == "value") ....

你可以得到的問題,如果你不小心寫if (variable = "value") ... 編譯器不會拋出一個錯誤,所以一些人使用的if ("value" == variable) ...的約定,那麼如果你不小心=而不是==編寫,編譯器會拋出一個錯誤

+0

你是否覺得經常犯這些錯誤足以證明減少翻譯句子的可讀性?在C#中,你會得到編譯器警告,所以我總是寫我讀的方式。我也在其他語言中這樣做,因爲我還沒有犯這個錯誤超過幾次。 – 2013-02-20 10:15:21

+0

這個答案很有用,參考也是有用的:) – Phoenix 2013-02-20 10:27:29

0

檢查if(foo == true)意味着

檢查,如果foo是等於真正等於真正

這只是根據我的開銷。