请教个问题 a 函数调用 b 函数 是在 a 中确保传递给 b 的参数都正确好 还是在 b 中检查参数好?(两个函数都是自己写的)我觉得 1 好

2016-08-02 21:28:27 +08:00
 woai110120130
2013 次点击
所在节点    问与答
8 条回复
htfy96
2016-08-02 21:41:24 +08:00
脱离实际情景讨论没有意义
SuperFashi
2016-08-02 21:42:11 +08:00
从算法上来说,前者好,因为耗费的时间一样,空间却少一层。
但是我个人喜欢从函数本身来看,如果 B 要做的事情很多,就在 A 里面判断,反之。
如果有 AB 两个函数都要调用 C 且要验证参数正确的话,就放在 C 里面。对网络编程来说也是这样,在服务端验证而不是在客户端验证。
woai110120130
2016-08-02 22:05:58 +08:00
这显然是一个普遍问题
Ge4Los
2016-08-02 22:13:41 +08:00
最外层检查,最外层的输入不可靠。
a 调 b, 就用 a 检查。
若 c 也调 b, 但是检查标准和 a 不一样,直接在 c 里面写检查不就更灵活了。
scnace
2016-08-02 22:34:32 +08:00
我怎么觉得这两件事都要做啊~
woai110120130
2016-08-03 08:39:59 +08:00
@htfy96 毫无编程经验
JamesRuan
2016-08-03 12:21:29 +08:00
A 中保证正确, B 中用 assert 保证如果不正确会挂掉,这样无论是自己用还是日后暴露给别人用,代码都会很健壮。

也就是所谓的“默认信任、但总是检查”。很多时候自己手贱或者 A 中没有考虑到一些特殊情况会给 B 传递 B 不允许的参数导致程序出 Bug ,而这种 Bug 会非常难找。
miaowei
2017-07-02 09:37:34 +08:00
@JamesRuan
“ A 中保证正确,B 中用 assert 保证如果不正确会挂掉。”
赞同,我平时也是这么做。

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

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

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

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

© 2021 V2EX