免费注册 查看新帖 |

Chinaunix

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

[C] 大家谈谈自己的看法 [复制链接]

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
21 [报告]
发表于 2012-10-29 13:36 |只看该作者
大惊小怪。

而且全局变量、函数长度这种事,要看逻辑上合不合理,而不只是一个数据。

论坛徽章:
0
22 [报告]
发表于 2012-10-29 15:56 |只看该作者
有啥奇怪的,还见过圈复杂度和扇出上百的函数呢。。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
23 [报告]
发表于 2012-10-29 18:11 |只看该作者
我正在写暗黑代码,绝对暗黑,看的人绝对吐血
所有函数全是 void function_name(void);
所有输入参数都在全局数组
u32 recv_buff[512];
所有输出参数都在全局数组
u32 send_buff[512];
除了这俩全局变量外没有全局变量了
每个函数的局部变量限制在8个u32以内
程序在M*CORE上裸奔,main函数最简单,花括号里就两句

void main(void)
{
    init_func();
    while(1) { };
}

这俩全局变量本来是一个
u32 buff[1024];
输入输出都用一个缓冲区,写的那叫蛋疼玉碎(编程序的主要思考就是计算偏移从而分配内存给输入输出参数)
我实在受不了了分成了两个

本来M*CORE是有malloc函数的,哪想到外挂的库把堆内存+栈内存几乎全部用光
而且是直接引用堆栈地址那种(我看不见库的代码,但是我发现malloc从来不返回NULL,我就知道写库函数的人肯定不用malloc)
还好BSS段我能用4KB,栈内存还剩不到256字节(本来有4KB堆+4KB栈)

这种风格代码写得多了,大脑肯定要退化
上周五下班前我的豪言壮语是:我已经成功的消灭数据结构这种概念
雷倒了所有同事

论坛徽章:
0
24 [报告]
发表于 2012-10-30 09:09 |只看该作者
回复 23# safedead
那岂不是很痛苦。堆都用光了,不用释放的吗。看来每个人的思想还真是不一样啊,你认为这个观点好,他却认为那个观点好。各种歧义。我一直认为写程序是很享受的事,现在看别人的跟自己风格不相近的代码,着实让人无法适应啊

   

论坛徽章:
0
25 [报告]
发表于 2012-10-30 13:51 |只看该作者
我现在喜欢所有的状态通过函数参数而非成员变量维护。
然后状态的保持就用labmda/bind来做。
这样一个函数牵扯到的状态在函数的实现里面一目了然,写起来很舒服。
另外我觉得函数应该尽可能小,一个函数大于30行就已经比较难测试了,大于100行基本上就没法测试了。

论坛徽章:
0
26 [报告]
发表于 2012-10-30 14:07 |只看该作者
回复 20# 雨过白鹭洲

  有啥办法。需求要提一堆bull shit过来。。令到你的代码无法这样写,久了~~
   

论坛徽章:
0
27 [报告]
发表于 2012-10-30 16:18 |只看该作者
回复 25# qinggeng
相当同意啊,看来写程序,越精简越好。代码写给机器用,却更是给你看的,淡然写的越简单越明白就越好

   

论坛徽章:
0
28 [报告]
发表于 2012-10-30 17:03 |只看该作者
同情楼主;

曾经为了重构一个有 3K + 全局变量的 fortran 程序,专门写了一个 parser。

论坛徽章:
0
29 [报告]
发表于 2012-10-30 21:34 |只看该作者
jueshidouzi 发表于 2012-10-30 16:18
回复 25# qinggeng
相当同意啊,看来写程序,越精简越好。代码写给机器用,却更是给你看的,淡然写的越简 ...

其实小函数还有一个好处:复用度高。
如果函数大了,牵扯的东西太多,来了个和原来类似,但有微妙差别的新需求,改起来就很麻烦了,很容易到处C&P,这是代码中最恶心的地方。
但是如果是用很多小函数来实现的话,往往只用改写一小部分,添加一些新函数,改改流程就好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP