2016-11-14 46 views
-1

我有代碼:要知道好的做法,我應該遵循下面的代碼

int good_practice(void) 
    { 
     if (somethings == TRUE) 
     return true; //i am asked to remove it coz it will reach anyhow at end and do same but i feels it is good practice and why should i wait for end? 
     else 
     return false 
     } 
    } 
    return true; 
    } 

問我刪除第一回,因爲它最終將達到的功能結束,並將返回true.Is這個好?

我覺得爲什麼我需要等待cpu去函數結束並返回,雖然我可以早做。如果我決定返回一些條件,爲什麼我應該從結束返回爲什麼不有自己爲什麼要等待結束?

而且,如果我等待結束我增加時間複雜性(我知道它不會有任何區別),但沒有指令也增加。

請幫我擺脫這個困惑嗎?

回答

2

這被稱爲「早期回報」,我不認爲有明確的共識。

優點:

  • 你不能錯,如果你提前返回執行一些其他的代碼。
  • 如果您正在閱讀此特定執行分支,則提前返回會使流程更加明確。
  • 也可以通過提前返回來降低縮進級別。

缺點:

  • 當你正在尋找整體功能,很容易錯過早期的回報。

還有一些類似的早期回報問題,see here for example

+1

考慮到OP的If-Else不使用花括號的習慣,OP不應該使用Early return ...可能最終會導致Apple的SSL Goto bug ;-) – Swanand

1

您要求刪除第一return true,因爲你可以簡單地檢查這個樣子,而不是有一個額外的冗餘return true

int good_practice(void) { 
    if(!somethings) { 
     return false; 
    } 
    return true; 
} 

無論如何,有問題的代碼是非常冗餘

你可以用一個更好的版本來替換它,就像這樣:

int good_practice(void) 
{ 
    return somethings; 
} 

關於早日迴歸:

它通常最好有在一端返回,因爲性能獲得,當提前返回時,只有一個返回只有

(這只是我自己的經驗,儘管)。

+0

我希望對downvotes的解釋:] – Xatenev

+0

他對這種特殊情況不感興趣。這只是一個例子。他問,當函數最終返回相同的值時,返回是否合理。 – zoul

+0

@zoul好的..我添加了一些關於這個的句子...... – Xatenev

相關問題