看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Zcode (Zcode)》之銘言: ----- (1) ----- bool isLarger(int a, int b) { if (a > b) return true; else return false; } 這寫法蠻多 compiler 會噴 warning , 遇到這情形我會故意在最後一行, 加一個無義的 return true; 去消 warning ----- (2) ----- bool isLarger(int a, int b) { if (a > b) return true; return false } 其實我比較常用這個。 ----- (3) ----- 然後蠻多網友說用 return (a>b); 一開始也習慣盡可能寫短 (短到有點噁心那種), 不過發現這樣不好 debug, 所以寧願多設一個變數做觀查。 bool isLarger(int a, int b) { bool ret = (a>b) ; ///< 斷點下在這裡還可以觀查結果 , 直接 return 就沒了.. return ret; } ----- (4) ----- 另有時候會用一個 bool ret 當傳回值, 一律用 goto (有時候可以不用 goto 是沒錯) 再一起 return 回去。 遇到要處理記憶體的時候,還蠻建議最後再一起 return 回去。 bool func() { bool ret = true; int * arr1 = NULL, *arr2 = NULL; if (! (arr1 = malloc(...)) ) { ret = false ; goto func_end; } if (! (arr2 = malloc(...)) ) { ret = false ; goto func_end; } func_end: if(arr1) free( (void*)arr1); if(arr2) free( (void*)arr2); return ret; } --------------- 最後一種大概是最常見的吧,一堆 if-else if-else if... 中間確信結果或遇到問題的時候就直接 return 回去。 -- 就算把新鮮的肝拿回去,還是一樣寫碼到禿頭,加班到天亮, 永遠當老闆的傀儡 你是不是想這麼做? 是的話你就拿回去~ 拿啊!! 九世宅男 : 下輩子不要再讓我幹工程師了 ~ < Kuso 星爺語錄 > -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 101.15.129.78
diabloevagto:你第四種可以考慮用try catch將ret丟出來 11/06 01:06
azureblaze:把不是exception的東西當exception效能會很糟喔 11/06 01:18
uranusjr:最後一個我會拆成兩層 function, 用 goto 寫如果其他人搞 11/06 01:35
uranusjr:不清楚狀況多改出個 return 就慘了 11/06 01:36
littleshan:4.請用 RAII,因為你的 if block 裡面可能也會配置資源 11/06 02:28
littleshan:這種情況若還用 goto 會崩潰的 11/06 02:29
EdisonX:嗯,是該用 RAII 沒錯... 11/06 23:25
AnyaAlstreim:C++ 用 RAII, 那請問 C 語言該如何處理? 11/07 04:49
tomnelson:樓上請看我回文那邊,雖說那篇推文被人說為啥不用RAII,但 11/07 23:09
tomnelson:其實回文裡程式會這麼寫就是純C的寫法呀! 11/07 23:10
AnyaAlstreim:是阿... 所以我很納悶... 11/08 01:04
littleshan:C 沒有好的解法,所以別再用純 C 了 (無誤 11/12 13:14
littleshan:這個討論串原po就指明了C++,所以用RAII是很合理的 11/12 13:14