免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4115 | 回复: 14
打印 上一主题 下一主题

[C] 大家在实际项目中怎样处理,或者看待函数之间的关联性? [复制链接]

论坛徽章:
11
摩羯座
日期:2013-09-29 17:39:09白羊座
日期:2014-11-13 09:38:14技术图书徽章
日期:2014-01-17 15:07:36狮子座
日期:2013-12-25 14:01:52技术图书徽章
日期:2013-12-17 11:33:22技术图书徽章
日期:2013-12-03 10:27:57天秤座
日期:2013-11-08 15:47:19申猴
日期:2013-10-29 13:16:32未羊
日期:2013-10-12 22:28:56辰龙
日期:2013-10-09 14:39:5515-16赛季CBA联赛之山东
日期:2016-07-25 10:23:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-11 17:49 |只看该作者 |倒序浏览
先谢过各位
小弟想了很久怎样描述这个问题,貌似有耦合方面的意思(其实我不太了解耦合性,先姑且这么认为)
比如说有函数A,B,C,D,E,F,各自细化为只实现某一项特定的功能(判断布尔值,flush缓冲区,判断用户输入,转换格式,判断错误类型,打印出错信息,终止程序等),为了判断或者处理异常,需要联合调用函数A判断输入是否合法,然后调用B转换格式,然后又调用C刷新stdio缓冲区,B又调用D处理信号,D调用E执行正常或异常退出,其间夹杂各种宏,常量,还有传递于各个函数间的变量等等,像我这样的初学者看这样的代码想要了解这些自定义函数的实现时,尤其是函数的参数超过3个的情况下,相当发怵,瞬间望而却步

不可否认这样的写法很精悍,就像说话带成语一样引经据典,以小弟现在的水平,错误一律用perror(),退出直接exit()等等,反正需要什么功能了就直接罗列库函数系统调用,也就是说没有也不会使用程序语言的表达方式,代码实现会很啰嗦

请教各位怎样看这个问题,在实际项目中怎样组织自己的代码,怎样阅读这些关联性很强的代码?

希望小弟已经把问题描述清楚了,再次谢过各位。

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
2 [报告]
发表于 2013-12-11 21:53 来自手机 |只看该作者
能解决问题就ok,不要故意写恶心的代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2013-12-12 01:36 |只看该作者
把函数看做跟内置类型同阶级的东西,不区别对待就好。

论坛徽章:
0
4 [报告]
发表于 2013-12-12 09:01 |只看该作者
商用的程序的鲁棒性、可靠性要求是很高的,不能遇错就exit()
商用程序里大部分代码是检错和处理用的

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2013-12-12 09:55 |只看该作者
你写的是玩具代码啊,还exit。。。

论坛徽章:
11
摩羯座
日期:2013-09-29 17:39:09白羊座
日期:2014-11-13 09:38:14技术图书徽章
日期:2014-01-17 15:07:36狮子座
日期:2013-12-25 14:01:52技术图书徽章
日期:2013-12-17 11:33:22技术图书徽章
日期:2013-12-03 10:27:57天秤座
日期:2013-11-08 15:47:19申猴
日期:2013-10-29 13:16:32未羊
日期:2013-10-12 22:28:56辰龙
日期:2013-10-09 14:39:5515-16赛季CBA联赛之山东
日期:2016-07-25 10:23:00
6 [报告]
发表于 2013-12-12 09:57 |只看该作者
回复 4# fenghw8088
了解楼上的意思,遇到错误与最终退出之间,可能还要经过根据返回值或errno定位错误类型,刷新stdio缓冲区,exit handler,signal handler等等
但小弟的意思是有些人会把这些功能在代码的实现上组织的很精妙,把一些常用的功能封装成为自定义的函数,每个函数完成的功能很细化,但函数间的关联度很高,因此完成一个比如出错退出的任务可能就需要多个函数交错关联
而我自己实现相同的功能,仅会需要什么的时候就调什么,在代码的实现上没有考虑表达方式的因素,但我目前觉得这种方式反而更简单直接,只是看起来会比较啰嗦

3楼的lost_templar讲到,把这些自定义的函数当做系统库函数,似乎是一个方法,不过要了解这些功能的具体实现,还是需要硬着头皮去看这些关联度很紧密的函数

大家在实际项目中会定义自己的封装函数吗,举个简单的例子,把打印库函数或系统调用的出错信息和exit()退出程序封装成一个单独的函数?
   

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
7 [报告]
发表于 2013-12-12 10:13 |只看该作者
不自己封装函数……难道楼主是把所有逻辑都写main函数里面?

论坛徽章:
11
摩羯座
日期:2013-09-29 17:39:09白羊座
日期:2014-11-13 09:38:14技术图书徽章
日期:2014-01-17 15:07:36狮子座
日期:2013-12-25 14:01:52技术图书徽章
日期:2013-12-17 11:33:22技术图书徽章
日期:2013-12-03 10:27:57天秤座
日期:2013-11-08 15:47:19申猴
日期:2013-10-29 13:16:32未羊
日期:2013-10-12 22:28:56辰龙
日期:2013-10-09 14:39:5515-16赛季CBA联赛之山东
日期:2016-07-25 10:23:00
8 [报告]
发表于 2013-12-12 10:17 |只看该作者
回复 7# shan_ghost
呵呵,当然不是,只不过自己封装的函数太简单了
个人觉得这就是一个代码表达方式的问题
牛人能够封装的很精妙,而我目前只能封装的很简单,因此代码看起来会啰嗦


   

论坛徽章:
0
9 [报告]
发表于 2013-12-12 17:47 |只看该作者
回复 1# superwujc
这就考验抽象和逻辑思维的能力了

论坛徽章:
11
摩羯座
日期:2013-09-29 17:39:09白羊座
日期:2014-11-13 09:38:14技术图书徽章
日期:2014-01-17 15:07:36狮子座
日期:2013-12-25 14:01:52技术图书徽章
日期:2013-12-17 11:33:22技术图书徽章
日期:2013-12-03 10:27:57天秤座
日期:2013-11-08 15:47:19申猴
日期:2013-10-29 13:16:32未羊
日期:2013-10-12 22:28:56辰龙
日期:2013-10-09 14:39:5515-16赛季CBA联赛之山东
日期:2016-07-25 10:23:00
10 [报告]
发表于 2013-12-12 17:48 |只看该作者
有道理,多谢楼上几位的指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP