2012-02-12 102 views
-1

考慮:分配條件。這是一個好習慣嗎?

if (a = 10) 
{ 
    /* do something */ 
} 

我很感興趣,如果它是做了好事還是壞事,爲什麼,因爲我不得不經常面對它。先謝謝你。

請考慮一個更復雜的例子。你更喜歡什麼?爲什麼?

function getSomeData() 
{ 
    return rand(0, 5); 
} 

第一:

if ($result = getSomeData()) 
{ 
    print($result) 
} 

或二:

$result = getSomeData(); 
if ($result) 
{ 
    print($result); 
} 
+2

無這不是很好的做法。在這種情況下,根據不同的語言,它要麼拋出一個錯誤(因爲'了'不是布爾或賦值不返回值)或者它會始終評估爲比'0'「正常」等真(整數評估爲真)。在這兩種情況下,'if'語句似乎都是不必要的。 – 2012-02-12 11:57:07

回答

0

,「如果」是不必要的,做作的回報始終是10

它會隨着

if(a = b) 
{ 
// do stuff 
} 
更interresting

在這種情況下,我更喜歡與另一對(surronding它)像:

if((a = b)) 
{ 
    // do something 
} 

這裏,您去,你知道你做什麼

一個好的規則另一個編碼器:如果你想比10秒更瞭解的情況,也許有另一種方式來表達它一般

+1

使用另一對大括號圍繞條件不起任何作用。所以我不會說你告訴他們你知道你在做什麼。如果您想對其他編碼者說些什麼,請使用更明顯是正確的評論或代碼。 – svick 2012-02-12 13:59:40

+1

@justin爲什麼有無用的括號?這完全相反,它向其他人表明你不知道你在做什麼! – Fraser 2012-02-12 20:12:41

+0

@svick他們是括號()不是一對大括號{} – Fraser 2012-02-12 20:14:20

-1

這絕對是可怕的,在您檢查的條件的情況下,你不嘗試做一個任務。我甚至不確定這是否會起作用,以及if語句的結果如何。

做這一點:

if (a == 10){ /* do stuff */ } 

還是做到這一點:

a = 10; 
if (/* condition here */){ /* do stuff */ } 

相信你已經走錯了單=的==兩倍。

編輯:

對您的更爲複雜的局勢作出反應,你必須把布爾在if語句(取決於編程語言,這將要麼返回一個錯誤或沒有)。將其他任何東西放在不返回布爾值的if語句中實際上是一件壞事。

0

沒有什麼大的魔法!

在此,一個assignement返回是被分配的值的值。

在你的情況下,(a = 10) => 10 =>一個非零=>因此 「真」!

因此,它總是返回在這個特殊的例子真正

+0

不,它會在Java中拋出一個異常:*類型不匹配:無法從int轉換爲布爾值* – 2012-02-12 12:12:52

相關問題