哪一個更優?這與你使用哪一個有關係嗎?你應該使用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
}
哪一個更優?這與你使用哪一個有關係嗎?你應該使用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
}
兩者在功能上是相同的。在行爲或表現方面,它們都不比其他方面優越。這裏唯一真正的問題是可讀性,這將根據示例和編程團隊的具體情況而有所不同。總之,選擇你想要的任何東西。
請注意,您的示例應該可能會更完整,以使這些斷言成立。它應該真的是比較;
public static void returnMethod()
{
if (true)
MessageBox.Show("bad data");
//restOfMethod
}
有:
public static void elseMethod()
{
if (true)
MessageBox.Show("bad data");
else
{
//restOfMethod
}
}
這取決於幾件事情。在條件不再適用之後,你有額外的代碼嗎?如果是這樣,那麼返回將會更加優化,因爲它會阻止即將發生的語句運行。
另一個想法是如何放置?如果這是一個有回報的方法,你可以使用它。同樣,如果它不適用於讓周圍的功能可以接受退貨,那麼您不希望使用返回。
這是否有道理?
的一點是,也有一些是在該方法中在第一示例中的'if'之後,並且在第二示例中,所有的代碼將被放置在'else',所以代碼被跳過無論哪種方式,並且有兩種情況下都不需要額外的計算他們最終都會得到保證。 – Servy
我的意思是,在結束括號後。我們給了一個片段.....所以在關閉其他大括號之後。在那之後會有可能被執行的東西......如果不再需要它,並且返回它是有意義的,那就這樣做。因爲它會阻止代碼在條件 – Fallenreaper
後面碰到所有內容,這意味着(所有)剩餘的代碼將被放置在'else'中。 – Servy
我假設你的意思是更多的東西一樣
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...
}
沒有,沒有性能差異。
這將更多地設計偏好。有些人是頑固的,永遠不會使用的方法,而其他人則喜歡保持他們的代碼簡潔明瞭,如果使用回報可以幫助他們,那就更好了。
我說從來沒有一個空的其他{}語句,除非它只是一個佔位符,並在這種情況下,這樣做
else
{
//Todo: Fill in logic to handle the else case, waiting for business to get back to me
}
我個人認爲,內部的「如果」是罰款返回,但如果下面沒有什麼,如果寫「返回」;浪費幾百個像素。如果它的像素數量完全一樣,而且難以理解,我總是會去做。
在if-else和return會做同樣的事情(其他答案提供了一些例子)的情況下,我認爲可讀性是重要的。
我認爲,如果你寫'else'或直接'return',那麼對於一個'if'它並不重要。 嵌套一些'if-else'語句會變得更糟。在一個方法中,多個「返回」也可能非常不可讀。
我不是一個關於嵌套if-else的粉絲,也沒有在同一個方法中放置多個return。但是如果我必須選擇,我更喜歡有多個「回報」。
它們是相互排斥的...這是不是一個非此即彼/或情況。如果還有其他選擇,則使用'else',如果沒有,則不使用。 'return'也是情景。可能有一段時間你需要它,當你不需要的時候會有很多次。 – aserwin
_「你使用哪一個很重要?」_當然,第一個會立即返回,第二個不會。 –
如果您遵循* Object Calisthetics *,則第一種方法更可取,其中在方法中最多允許使用1級縮進,並且阻止使用「else」關鍵字。 – Matthew