免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3119 | 回复: 10

[C] 请教两个函数哪个更好?数据到底需不需要封装? [复制链接]

论坛徽章:
0
发表于 2010-08-16 09:19 |显示全部楼层
A,B模块间通信,格式是这样的,首先发送操作代码,然后发送一系列参数,不同的操作代码需要的参数个数不同

我写了两个函数接口,哪个更好点?

函数1:
  1. void f( int op_code , size_t argu_len , int * argu )
  2. {
  3.   ...
  4. }
复制代码
函数2:
  1. typedef struct{

  2. int op_code;
  3. size_t argu_len;
  4. int *argu;
  5. } T;

  6. void f( T *p )
  7. {
  8.   ...
  9. }
复制代码
第2个接口看起来简单点,但是每次发送前,数据都需要打包,感觉有点麻烦。

大家觉得哪个方式更好?

论坛徽章:
0
发表于 2010-08-16 09:21 |显示全部楼层
我喜第一个

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2010-08-16 09:22 |显示全部楼层
第一个好

论坛徽章:
0
发表于 2010-08-16 09:25 |显示全部楼层
回复 2# zhangsuozhu


    理由呢?

其实我也纠结了很久,第1种调用起来很顺手,直接送参数,第2种每次都要打包数据,很麻烦,但是接口比较简洁点,徘徊中...

论坛徽章:
0
发表于 2010-08-16 09:28 |显示全部楼层
回复 4# ahui886


    如您所说的。第一个不用打包参数用着方便。参数也不多。看函数直接就可能明白他用哪些参数了。第二个还要参看数据结构。看完数据结构,还要了解这个结构中哪些是函数需要的,那些成员没有用。总的来说不如第一个简洁。所以我喜第一个

论坛徽章:
0
发表于 2010-08-16 09:47 |显示全部楼层
支持第一个用法

论坛徽章:
0
发表于 2010-08-16 10:15 |显示全部楼层
支持第二个,可利于今后的扩展,假如你今后想从操作代码中再分出一层用服务代码标识,你只需在结构中增加一个域,现有的函数可以不用更改,在新加的函数中使用其中新加的服务代码即可。

论坛徽章:
0
发表于 2010-08-17 12:53 |显示全部楼层
什么叫松散耦合?什么叫1点维护?楼主知不知道?

论坛徽章:
0
发表于 2010-08-17 13:22 |显示全部楼层
回复 9# blackuhlan


    恩,搜素了一下,ls能不能分享下心得,谢拉...

论坛徽章:
0
发表于 2010-08-17 15:22 |显示全部楼层
我随便说说我的理解吧,希望对楼主有帮助:
松散耦合是相对于紧耦合而言的,紧耦合说穿了就是一条路,你只能走这条路,如果情况发生变化则需要开辟一条新路,就像爱迪生的大猫走大门,小猫走小门,每只猫一个门。也不能说好不好,看你怎么用,不过现在一般的系统要求是松散耦合。
一点维护意思则很明显,如果变化的话,我只需要修改某一个地方(一点),而不是多个地方。
具体到你这里,则你如果接口是个结构,则可以相对简单地扩充接口或者解释接口,如果是具体的某几个变量,则如果接口变化,你得修改你的函数(加变量)或者新增函数(新接口),不管是那种,你的(已有的)上层调用者都要跟着改变,这是不合理的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP