2012-07-24 216 views
-3

哪個代碼更好? 使用return()在每一個條件:更好的編程風格?

void someProc(String str) { 
    if (str.length < 1) { 
     log("bad length"); 
     return(); 
     } 
    if (str.charAt(3) == "N") { 
     log("N at 3"); 
     return(); 
     } 
    parse(str); 
} 

或子條件沒有回報():

void someProc(String str) { 
    if (str.length < 1) log("bad length"); 
    else if (str.charAt(3) == "N") log("N at 3"); 
    else parse(str); 
} 

什麼是perfornance更好?

+2

你真的應該編寫'return;'不要'return();'和你的問題是一個品味和風格的變化。優化編譯器對性能沒有影響。 – 2012-07-24 13:58:16

+0

-1僅用於標記。這是什麼語言? – geoffspear 2012-07-24 13:59:37

+0

Wooble,sry,但我認爲在這樣的網站用戶可以識別這樣的語言:) PS:它的java – iamnp 2012-07-24 14:08:39

回答

2

應該沒有意義的性能差異。編譯器應該生成基本相同的指令。

0

嗯,我猜這兩者之間沒有更好的表現。但第一個是更好的可讀性。順便說一句return語句對於確保操作成功非常好,所以只需使用return;)

0

這種類型的問題通常會吸引強烈的和暴力的參數。

對於我來說,我更喜歡只在返回值時使用返回值,因爲我認爲空的返回值可能會造成混淆(例如,「程序員忘記鍵入變量名稱」),我不介意多個出口點。我會寫如下一些Predroc:

void someProc(String string) 
{ 
    if (str.length < 1) 
    { 
    log("bad length"); 
    } 
    else if (str.charAt(3) == "N") 
    { 
    log("3 is N"); 
    } 
    else 
    { 
    parse(str); 
    } 
} 
+0

雖然有時實際上只是返回正確的位置很有幫助。通常情況下,如果您需要跳過方法中的其餘代碼,並且沒有很好的乾淨方法來執行此操作,而不添加可能的嵌套if語句級別,則會發生這種情況。 – Matt 2012-07-24 19:16:57

0

你必須測試你的數據集。我找不到任何明顯的差異。

我認爲,如果你在Code Review

希望這有助於發佈此代碼會更好!