编程过程中, 你是习惯提前返回, 还是统一返回。

2017-04-24 10:42:50 +08:00
 banli

在编程的过程中, 每个人都有每个人的编程习惯。 就比如在写一个函数的时候, 我就喜欢判断一下不符合预期的接口, 提前报错或者提前返回,这样写下了代码会容易看懂, 没有复杂的嵌套判断。 。

然而还一种习惯,就是习惯统一返回。这样就只有一个地方返回,比较好测试预估。但是相应的,代码的各种判断嵌套可能就比提前返回来的多了,看逻辑会吃力一些。

你觉得呢?

6710 次点击
所在节点    问与答
75 条回复
ivvei
2017-04-24 21:09:16 +08:00
看心情吧…
shijingshijing
2017-04-24 21:43:40 +08:00
嵌入式里面,这种直接是真值表套状态机的, Guard Clauses 写代码的时候是爽了,测试和 MC/DC 覆盖率分析的时候分分钟教做人。
kongkongyzt
2017-04-24 22:15:53 +08:00
提前返回,并且尽量提前返回。
mingyun
2017-04-24 22:50:33 +08:00
尽早 return
zoffy
2017-04-24 22:52:23 +08:00
提前
loveyu
2017-04-25 00:49:47 +08:00
提前吧,至少把错误判断提前,如果觉得复杂就 try_catch ,否则真的很难理解。
RqPS6rhmP3Nyn3Tm
2017-04-25 05:13:42 +08:00
我这里禁止提前返回,因为会要求 proof 。
MajorAdam
2017-04-25 09:44:10 +08:00
肯定提前
fanqsh123
2017-04-25 09:56:23 +08:00
int luaGetStringMd5(lua_State* L)
{
int nResult = 0;
BOOL bRet = false;
char szMd5[64];
const char* pszString = NULL;

TRY_GETSTRING(pszString, 1);

bRet = GetStringMD5(szMd5, pszString);
XYLOG_FAILED_JUMP(bRet);

lua_pushstring(L, szMd5);
++nResult;

Exit0:
return nResult;
}


goto 挺好用的
dogfeet
2017-04-25 10:28:38 +08:00
@geelaw 既然都是自己 malloc 了,那操作这块内存的时候大小一定是自己很自信了。实在看不出 vector<uchar> 额定大小再操作 data 比你上面的写法性能低效在哪里,至少肯定不会是比 malloc 低。
lance26
2017-04-25 10:38:41 +08:00
@shijingshijing 可以给段代码看看吗?想学习下
wayslog
2017-04-25 12:33:38 +08:00
@rozbo 看来你不用 RAII 啊…都什么年代了写 C++还手动管理内存?当然了,写 C 的无解了…
rogerchen
2017-04-25 12:42:34 +08:00
@wayslog
一看那哥们就是写 C 的,连 C with class 都算不上, RAII 管理外部资源这种常识都不知道。
allgy
2017-04-25 14:07:03 +08:00
提前返回
geelaw
2017-04-25 14:19:41 +08:00
@dogfeet 啊我突然发现“ vector 的价值”了 - - 就是自动回收内存(为啥说着说着连最初的目的都忘掉了逃

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356908

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX