免费注册 查看新帖 |

Chinaunix

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

[C] 函数调用多少层为好??? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
31 [报告]
发表于 2011-03-10 16:20 |只看该作者
回复 30# koolcoy


    这个原则 不烂,我说的长度变化 是只说  因为  把代码 修改成函数 而带来的长度变化,当然也包括 把  相同的代码段
写成宏。
      我没有说   使用简单的 变量名, 使用奇怪的逻辑等。

  我这里的长度变化,只是说  与代码拆分函数 和宏带来的长度变化。

   其本质就是要消除逻辑上的冗余性。  修改一处逻辑,只在一处修改就可以了。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
32 [报告]
发表于 2011-03-10 16:25 |只看该作者
本帖最后由 koolcoy 于 2011-03-10 16:28 编辑

回复 31# goldenfort


代码长度根本就不是代码质量的一个评价标准,无论使用宏还是啥,只要做到了不重复,逻辑清晰就可,至于最终代码是长是短都无所谓。

宏是否安全等问题,这里不扯。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
33 [报告]
发表于 2011-03-10 17:43 |只看该作者
回复 32# koolcoy

不重复的一定比重复的短

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
34 [报告]
发表于 2011-03-10 17:45 |只看该作者
回复 33# goldenfort


    用iphone女生的一定比用nokia的漂亮{:3_197:}

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
35 [报告]
发表于 2011-03-10 18:38 |只看该作者
回复 34# koolcoy


    只要漂亮,没手机的也可以, 可惜论坛里没美女。

     我这里, 主要是就 函数的问题说的, 没有扯到其他。

      
      比如说, 我在 大学说 ,男的都好色。
   
       被幼儿园 和养老院  的小孩 和大爷 听到了, 马上说不对,

论坛徽章:
0
36 [报告]
发表于 2011-03-11 08:59 |只看该作者
回复  goldenfort


    用iphone女生的一定比用nokia的漂亮
koolcoy 发表于 2011-03-10 17:45



我是菜鸟,虽然注册CU比较早,但是稍稍不太赞成你的“一个函数只做一件事情”这个比较决绝的说法。

我就是看了太多一个函数只简单处理一把就交给下一个函数的例子才困惑的…………

太多函数嵌套了…………连续几个函数都没干什么事情…………

第一次不好说,其实这样做,有堆砌代码量的嫌疑……

一个函数要简单我赞成,一件事我也赞成,但是简单和一件事的标准可能大家认知不同吧。简单到拆分参数判断合理性就传递给下一个,下一个有反复处理是合理吗?

我觉得,一个函数至少要完成一个“逻辑”上可以称为“一件事”的标准处理再叫个下一个比较好。不然,函数函数函数还是函数,都看不见语句了…………

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
37 [报告]
发表于 2011-03-11 09:42 |只看该作者
回复 36# kingwolf520

>> 我是菜鸟,虽然注册CU比较早,但是稍稍不太赞成你的“一个函数只做一件事情”这个比较决绝的说法。
不讨论注册时间,菜鸟不菜鸟,就事论事。这个说法也不是我提出来的,我是在书上看到的,不过我赞成这种说法,自己写代码也是这么实践的。

>> 我就是看了太多一个函数只简单处理一把就交给下一个函数的例子才困惑的…………
>> 太多函数嵌套了…………连续几个函数都没干什么事情…………
>> 第一次不好说,其实这样做,有堆砌代码量的嫌疑……
这种现象不好说,有可能是好的,有可能有问题,要具体分析。但是其中的一种情况是一定有问题的:函数嵌套的外层都只有一两行,而最里层的函数特别长。

>> 一个函数要简单我赞成,一件事我也赞成,但是简单和一件事的标准可能大家认知不同吧。简单到拆分参数判断合理性就传递给下一个,下一个有反复处理是合理吗?
>> 我觉得,一个函数至少要完成一个“逻辑”上可以称为“一件事”的标准处理再叫个下一个比较好。不然,函数函数函数还是函数,都看不见语句了…………
这个标准我目前没有任何定量的方法来把握完全凭感觉,完全有可能“逻辑上的一件事情”就是一两行的代码。

另外,一个函数并不一定要处理“逻辑”上的一件事情,也有可能是“程序”上的一件事情。举个例子,我的代码不是异常安全的,但是我需要使用一个会抛出异常的第三方函数,这个时候我完全可以把这个第三方函数简单包装一下,把它抛出来的异常转换成一个错误码返回,这样我就不用每次调用这个函数的时候都try ... catch;类似的我也可以把错误码转换成异常,这样的话我就可以利用smart pointer等方式来释放资源,不用每做一次系统调用都检查返回值,然后处理errno。这样做的结果是,我的函数只有一两行同时它只做了“程序”上的一件事情。

论坛徽章:
0
38 [报告]
发表于 2011-03-11 12:03 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
39 [报告]
发表于 2011-03-11 13:37 |只看该作者
如果每一件事情都写成一个function,最终的结果就会变成: 每个人都写了大量的function在文件里面,并且许多fu ...
zy31887493 发表于 2011-03-11 12:03


你的逻辑很混乱……

论坛徽章:
0
40 [报告]
发表于 2011-03-11 13:51 |只看该作者
这个应该是经验的问题吧,形成自己的风格就好了,我也在摸索中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP