
void foo(int* a){ // check if a is null ? } int* get_a(void){ return NULL; } int main(){ int* a= get_a(); // check if a is null ? foo(a); return 0; } void foo(const int& a){ // check if a >0 ? } int get_a(void){ return -1; } int main(){ int a = get_a(); // check if a >0 ? foo(a); return 0; } 1 lihongjie0209 2019 年 3 月 29 日 看你怎么定义这个函数了 前置条件和后置条件了解一下 |
2 mooncakejs 2019 年 3 月 29 日 via iPhone 被调函数做。 高频或者 内部函数不用做。 |
3 jmc891205 2019 年 3 月 29 日 如果现在以及将来都是只有同一个人调用 那谁做都可以 如果会有其他人来调用 那被调的要做 |
4 wutiantong 2019 年 3 月 29 日 为了解决这个问题现代语言引入了 optional 类型, 即使 C 语言里没有 optional 类型,你也应该效仿其思想, 关键点是要事先约定好参数是否允许为 null。 |
5 wutiantong 2019 年 3 月 29 日 应该尽可能的把 约束条件封装成类型,而不是使用裸的基本类型(指针,int, double )然后再写 check code |
6 wutiantong 2019 年 3 月 29 日 甚至通过最简单的 typedef 也能取得有意义的改进(通过类型名产生一种文档约定的效果) |
7 darknoll 2019 年 3 月 29 日 是个好问题 |
8 Yourshell 2019 年 3 月 29 日 如何使用这个函数不应该由这个函数定义吗? |
9 Ahaochan 2019 年 3 月 29 日 被调函数做,你不能保证调用你代码的人是怎样的一个人( |
10 hx1997 2019 年 3 月 29 日 via Android 统一约定好就行了吧,如果内部不检查,就要在文档或注释写清楚。 |
11 geelaw 2019 年 3 月 29 日 via iPhone 需要考虑的问题是: - 谁应该消费这个函数? - 潜在消费者和提供者之间有边界吗? - 怎样效率高? |
12 miaoxia 2019 年 3 月 29 日 via iPhone 函数内部已代码的方式做判断,外部已文档的方式通知。调用方基于文档安规则传值,如果没按规则,就会得到文档中提到的异常情况。 |
13 TreStone 2019 年 3 月 29 日 via Android 模块内部接口调用调用者保证,对外接口被调者保证 |
14 MeteorCat 2019 年 3 月 29 日 via Android 被调用参数做 |
15 owenliang 2019 年 3 月 29 日 via Android 对外提供一定要检查。 |
16 Joyboo 2019 年 3 月 29 日 如果一万个地方调用呢?难道做一万次检查 |
17 bp0 2019 年 3 月 29 日 |
18 ian511 2019 年 3 月 29 日 脱离不了从上下游实际 use case 考虑 |