Re: [問題] 請問non-void函數return哪一種寫法比較好?
※ 引述《EdisonX (卡卡獸)》之銘言:
...中間恕刪...
: ----- (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 回去。
避免用 goto 的話,case (4) 可以改成:
bool func()
{
bool ret = false;
int *arr1 = NULL, *arr2 = NULL;
while (true)
{
if (!(arr1 = malloc(...))) break;
if (!(arr2 = malloc(...))) break;
ret = true;
break;
}
if (!ret)
{
if (arr1) free((void*)arr1);
if (arr2) free((void*)arr2);
}
return ret;
}
以上
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.104.146.64
→
11/06 23:27, , 1F
11/06 23:27, 1F
→
11/06 23:28, , 2F
11/06 23:28, 2F
→
11/06 23:28, , 3F
11/06 23:28, 3F
→
11/06 23:53, , 4F
11/06 23:53, 4F
→
11/10 19:50, , 5F
11/10 19:50, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):