2011-07-29 74 views
2

我想更好地組織以下兩個if聲明:如何組織更好的這兩個連續的IF語句?

if(A || B){ 
    do stuff... 
} 

if(A && ! B){ 
    do other stuff... 
} 

有沒有更好的辦法?

編輯!B在第二份聲明之前,對不起......

+1

當A && B爲真時,|| ||將評估爲真。這是你想要的行爲嗎? –

+0

不幸的是我忘了!在第二個IF語句的B之前的運算符。我現在編輯了這個問題。 – fstab

回答

6
if(A || B) { 
    do some stuff; 
    if(!B) { 
     do other stuff; 
    } 
} 

但是好處取決於使用情況,可能難以理解這個版本。

+1

有人終於明白了,以爲我看不到優勢:) +1 –

+0

@Ziyao,是的,我也是,只是回答了這個問題:D – unkulunkulu

+0

那麼現在的好處是代碼的性能更好,現在我避免了A的評估。不僅如此,代碼被簡化了,避免了對任意複雜的A表達式的第二次打字。缺點是我獲得了額外的嵌套級別。 – fstab

2

對於原來的問題,其中第二個條件是一個& & B,我的回答是:

如果不出意外,您可以將第二個塊嵌套在第一個塊中,以防止在第一個條件失敗時進行不必要的評估。否則,我看不出有什麼好的方法來縮短這個...並且嵌套假定第一個塊中的代碼不會更新A和B,它可能會這樣。

對於新問題,我的答案是在第一個嵌入塊中檢查!B,並省略第二個塊。這相當於爲新問題提供的另一個答案。

+1

由於OP改變了問題,我的回答不再相關。 – Patrick87

+2

然後最好編輯或刪除它,而不是添加評論。 –