主题 : 谈一谈单片机编程中全局变量 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 117095
精华: 0
发帖: 67
金钱: 350 两
威望: 70 点
贡献值: 0 点
综合积分: 134 分
注册时间: 2015-07-14
最后登录: 2018-09-05
楼主  发表于: 2015-08-14 17:05

 谈一谈单片机编程中全局变量

                                                                                                           谈一谈单片机编程中全局变量
工作也有些年头了,从一位技术新人成长到现在自诩小牛级别的人物,少不了要自己寻找资料阅读。上、书店里、杂志上......要嘛是些菜鸟浅薄的自炫处女贴,要嘛是高屋建瓴云里来雾里去的概念文,好不容易遇到个实践型高手写的文章,却在渐入佳境之际嘎然而止。本是隔靴搔痒,看完后心中更是郁结不已。也罢,今日强装回大牛,献丑谈一谈单片机编程中全局变量问题吧。
单片机程序最易范的错误是全局变量到处飞,这个现象在早期写汇编转型过来的程序员以及初学者中常见,这帮家伙几乎把全局变量当作函数形参来用,多数的.h文档里面一堆的结构体定义和extern,这个模块里边赋值123,那个模块里边判断123分支决定做什么。每当看到这种程序,我总要戚眉变脸而后拍桌喝骂。我不否认全局变量的重要性,但我认为要谨慎地使用它,滥用全局变量会引申带来其它更为严重的结构性问题。诸位看官,且听我细细道来。
1 它会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来将万分吃力。
2.它会导致软件分层的不合理,全局变量相当于一条快捷通道,它使得程序员模糊了“设备层”和“应用层”之间的边界。写出来的底层程序容易多情地关注起上层的应用。这在软件系统的初期或许功能调试进度一日千里,但到了后期往往bug一堆,处处“补丁”,雷区遍布。说是度日如年举步维艰,也不夸张的。
3.由于软件的分层不合理,到了后期维护,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺地修改,涉及大多数模块,而原有的代码注释却忘了更新修改,这个时候,交给后来维护者的系统会越来越像一个“泥潭”,注释的唯一作用就是为了使泥潭上方充满迷烟瘴气。
4.不必多言,你已经成功得到一个畸形的系统,它处于一个神秘的稳定状态!更多学习资料可以加Q群 310341439

然后我告诉大家现实意义的后果是什么。
1.“老人”气昂昂,因为系统离不开他,所有“雷区”只有他了然于心。当出现紧急的bug时,只有他能够搞定。你不但不能辞退他,还要给他加薪。
2.新人见光死,但凡来维护这个系统的,除了改出更多的bug外,基本上一个月内就走人,到了外面还宣扬这个公司的软件质量有够差够烂。
3.虽然产品的升级,几个月没有接触这个系统的原创者会发现,很多雷区他本人也忘记了,每次的产品升级周期越来越长,因为修改一个功能会冒出很多bug,而按下一个bug,会弹出其他更多的bug,在这期间,会产生更多的全局变量。有一天他告诉老板,不行啦不行啦,资源不够了,ram或者flash空间太小了,升级升级。
4.客户投诉不断,售后快崩溃了,业务员也尽量不推荐此产品了,市场份额越来越小,公司形象越来越糟糕。