2012-09-27 40 views
0

哪一個更優?這與你使用哪一個有關係嗎?你應該使用return還是其他?這些是最佳的?

If (condition is true) 
{ 
    MessageBox.Show("bad data"); 
    return; 
} 

//mode code here 

If (condition is true) 
{ 
    MessageBox.Show("bad data"); 
} 
else 
{ 
    //mode code here 
} 
+0

它們是相互排斥的...這是不是一個非此即彼/或情況。如果還有其他選擇,則使用'else',如果沒有,則不使用。 'return'也是情景。可能有一段時間你需要它,當你不需要的時候會有很多次。 – aserwin

+1

_「你使用哪一個很重要?」_當然,第一個會立即返回,第二個不會。 –

+0

如果您遵循* Object Calisthetics *,則第一種方法更可取,其中在方法中最多允許使用1級縮進,並且阻止使用「else」關鍵字。 – Matthew

回答

2

兩者在功能上是相同的。在行爲或表現方面,它們都不比其他方面優越。這裏唯一真正的問題是可讀性,這將根據示例和編程團隊的具體情況而有所不同。總之,選擇你想要的任何東西。

請注意,您的示例應該可能會更完整,以使這些斷言成立。它應該真的是比較;

public static void returnMethod() 
{ 
    if (true) 
     MessageBox.Show("bad data"); 

    //restOfMethod 
} 

有:

public static void elseMethod() 
{ 
    if (true) 
     MessageBox.Show("bad data"); 
    else 
    { 
     //restOfMethod 
    } 
} 
+0

_「兩者功能相同」_。不,如果這只是摘錄後有什麼東西了'如果-else'(FE'拋出新的異常();',你會得到不同的結果 –

+2

@TimSchmelter正如我在回答說,我假定OP在不知不覺中給出了一個不完整的代碼片段,因此我提供了一個更準確地表達我想要問的東西。使用這個例子,你的觀點是不可能的(整個觀點是'else'之後沒有任何東西)。 – Servy

+0

@TimSchmelter正如我所說,很明顯,我認爲我的代碼是他的意圖的表示,如果我誤解了,他應該這麼說,它確實會失效我的答案。我決定回答什麼,我覺得他打算問得而不是對他的問題的文字回答,這不太可能有幫助 – Servy

0

這取決於幾件事情。在條件不再適用之後,你有額外的代碼嗎?如果是這樣,那麼返回將會更加優化,因爲它會阻止即將發生的語句運行。

另一個想法是如何放置?如果這是一個有回報的方法,你可以使用它。同樣,如果它不適用於讓周圍的功能可以接受退貨,那麼您不希望使用返回

這是否有道理?

+0

的一點是,也有一些是在該方法中在第一示例中的'if'之後,並且在第二示例中,所有的代碼將被放置在'else',所以代碼被跳過無論哪種方式,並且有兩種情況下都不需要額外的計算他們最終都會得到保證。 – Servy

+0

我的意思是,在結束括號後。我們給了一個片段.....所以在關閉其他大括號之後。在那之後會有可能被執行的東西......如果不再需要它,並且返回它是有意義的,那就這樣做。因爲它會阻止代碼在條件 – Fallenreaper

+0

後面碰到所有內容,這意味着(所有)剩餘的代碼將被放置在'else'中。 – Servy

1

我假設你的意思是更多的東西一樣

If (condition is true) 
{ 
    MessageBox.Show("bad data"); 
    return; 
} 

...more code here... 

VS

If (condition is true)  
{  
    MessageBox.Show("bad data");  
}  
else  
{  
    ...more code here... 
} 

沒有,沒有性能差異。

這將更多地設計偏好。有些人是頑固的,永遠不會使用的方法,而其他人則喜歡保持他們的代碼簡潔明瞭,如果使用回報可以幫助他們,那就更好了。

0

我說從來沒有一個空的其他{}語句,除非它只是一個佔位符,並在這種情況下,這樣做

else 
    { 
     //Todo: Fill in logic to handle the else case, waiting for business to get back to me 
    } 

我個人認爲,內部的「如果」是罰款返回,但如果下面沒有什麼,如果寫「返回」;浪費幾百個像素。如果它的像素數量完全一樣,而且難以理解,我總是會去做。

0

在if-else和return會做同樣的事情(其他答案提供了一些例子)的情況下,我認爲可讀性是重要的。

我認爲,如果你寫'else'或直接'return',那麼對於一個'if'它並不重要。 嵌套一些'if-else'語句會變得更糟。在一個方法中,多個「返回」也可能非常不可讀。

我不是一個關於嵌套if-else的粉絲,也沒有在同一個方法中放置多個return。但是如果我必須選擇,我更喜歡有多個「回報」。

相關問題