免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: converse
打印 上一主题 下一主题

[函数] [讨论]判断参数正确性是调用函数的责任还是被调用函数的责任? [复制链接]

论坛徽章:
0
71 [报告]
发表于 2007-01-08 16:15 |只看该作者
原帖由 思一克 于 2007-1-8 13:56 发表
被调用者尽量检查。但主要还是靠调用者。

比如,一个最简单的strcpy(d,s)

函数中如何检查s,d的合法性? 做100%正确的检查是不可能的。



假设某种语言提供了此类功能呢?
系统不提供不代表这个逻辑不正确。

论坛徽章:
0
72 [报告]
发表于 2007-01-08 18:45 |只看该作者
c陷阱与缺陷里介绍assert是用宏来实现的,如果不发生意外的话是不会执行函数的,所以效率应该没什么问题

论坛徽章:
0
73 [报告]
发表于 2007-01-08 18:48 |只看该作者
原帖由 njmpop 于 2007-1-8 16:15 发表



假设某种语言提供了此类功能呢?
系统不提供不代表这个逻辑不正确。


理论上应该被调用者和调用者共同保证,并且理论上甚至可以保证不出任何意外,比如数据类型冲突等问题都不会发生。但实际上这是不可能的,理论和现实毕竟有差距。

论坛徽章:
0
74 [报告]
发表于 2007-01-08 21:08 |只看该作者
我觉得理论上是被调用者来实现判断,但现实中部分判断是无法实现的。

论坛徽章:
0
75 [报告]
发表于 2007-01-08 22:08 |只看该作者
调用者好比大老板
被调用者好比小员工
检查输入参数这种小事应该让员工干
员工干完了把结果告诉老板就好

论坛徽章:
0
76 [报告]
发表于 2007-01-09 08:28 |只看该作者
这里讨论的是C。

原则上讲,在C中,让被调用者充分地检查是不可能做到的。
调用者自己检查是可以做到的。
有点类似开车,车无法知道你走错了路。司机自己负责。

原帖由 njmpop 于 2007-1-8 16:15 发表



假设某种语言提供了此类功能呢?
系统不提供不代表这个逻辑不正确。

论坛徽章:
0
77 [报告]
发表于 2007-01-09 09:35 |只看该作者
不同意由被调用者全判断。
只要保证参数传入错误的时候能处理好错误就可以了,否则干脆把业务逻辑写到库里算了
被调用者只要能完成任务并且出错时能把错误反馈给调用者就行,管他参数是不是符合项目逻辑,难道从网络字节流输入的参数也需要我来给分析重组吗

论坛徽章:
0
78 [报告]
发表于 2007-01-09 09:39 |只看该作者
考虑一个函数的完整性, 函数开始执行时首先要判断输入是否满足要求

被调函数应负责

论坛徽章:
0
79 [报告]
发表于 2007-01-09 09:41 |只看该作者
被调用函数的责任,被调用函数应该保证传给自己的参数是经过校验的。

论坛徽章:
0
80 [报告]
发表于 2007-01-09 09:45 |只看该作者
原帖由 思一克 于 2007-1-9 08:28 发表
这里讨论的是C。

原则上讲,在C中,让被调用者充分地检查是不可能做到的。
调用者自己检查是可以做到的。
有点类似开车,车无法知道你走错了路。司机自己负责。



同意
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP