打印

一线研发之声:嵌入式C编程经验 之 全局变量猛于虎

[复制链接]
楼主: sedatefire
手机看帖
扫描二维码
随时随地手机跟帖
21
qisewai| | 2012-1-11 09:50 | 只看该作者 回帖奖励 |倒序浏览
不错,学习了

使用特权

评论回复
22
圆圈| | 2012-1-11 11:29 | 只看该作者
程序模型?如何分析抽象出来呢,从哪个角度进行模型构建呢?很愿意聆听网友的意见。本人一直以来都是从两个角度分析系统,事件--状态机迁移图 和 数据流图,前者分析控制流向,完善UI,后者可知晓系统数据的缘起缘灭。这些理论,院校的《软件工程》教材都有,大家不妨借鉴下。只不过那些理论,终究是起源于大型系统软件管理的,牛刀杀**,还是要裁剪一下的。
=============================================
最近也在有意的重新整理思考 程序模型 这问题。 楼主可以看些这方面专业书籍,至少能让你对这块知识有系统性认识。 构建符合不同应用的 程序模型 是件有挑战意义的事情!

使用特权

评论回复
23
tcpln2009| | 2012-1-11 13:06 | 只看该作者
嗯 先mark!!!

使用特权

评论回复
24
Periodic| | 2012-1-11 20:36 | 只看该作者
本帖最后由 Periodic 于 2012-1-11 21:55 编辑

呵呵 想起了 匠人 手记 呵呵!:shutup:

使用特权

评论回复
25
程序匠人| | 2012-1-11 21:09 | 只看该作者
关注!

使用特权

评论回复
26
aihe| | 2012-1-11 22:19 | 只看该作者
引用张教主的话,在资源有限的情况下,在MCU中使用适当全局变量还是有好处的,不必谈全局变量色变

以我的理解,O(∩_∩)O~

使用特权

评论回复
27
程序匠人| | 2012-1-11 23:42 | 只看该作者
以下为他山之玉:
全局变量的优缺点
使用全局变量的优点是:可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。
但是,使用全局变量也有许多缺点:
(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。
(2)全局变量破坏了函数的封装性能。前面的章节曾经讲过,函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进行存取,这种情况破坏了函数的独立性,使函数对全局变量产生依赖。同时,也降低了该函数的可移植性。
(3)全局变量使函数的代码可读性降低。由于多个函数都可能使用全局变量,函数执行时全局变量的值可能随时发生变化,对于程序的查错和调试都非常不利。
因此,如果不是万不得已,最好不要使用全局变量。

使用特权

评论回复
28
Cortex-M0| | 2012-1-12 08:21 | 只看该作者
写的不错~~~

使用特权

评论回复
29
OpCode| | 2012-1-12 17:03 | 只看该作者
硬堆栈,一直用全局变量当局部变量用的飘过。。。

使用特权

评论回复
30
caiwenbin| | 2012-1-12 21:18 | 只看该作者
楼主说的是很有道理,这个道理其实大家都懂的!
过多的使用全局变量,程序的可读性,可维护性都很差!
例如楼主说的,他到了新公司,把前人的程序重新写了一边!
其实可以换个角度思考问题的,楼主你的前任程序员,写出一个可读性,可维护性都很差程序!
起码对他自己是有好处的,1:开发周期快  2.公司有一定程度的依赖他,  3.他也没有任何义务,去帮助接替他饭碗的人! 前两点对他跟公司谈待遇很有帮助!
现在从你的角度来看,前任可读性,可维护性差,给你增加了很多工作!
实际上呢,现在程序员本来就过剩,大家的程序可读性,可维护性都很好的话,那些老板就需要更少的程序员!
当程序员严重过剩以后,有很多人会因此失业,整个行业的待遇更差!
再说了楼主在公司重新写代码,公司发工资,你就当开发新项目好了!
给钱干活,本没什么好抱怨的!如果不想接别人的烂摊子,大可换份工作!
其实前任没有责任和义务为后任着想!
要是公司对他好的话,他肯定也会为公司着想的!
其实大多数情况下,前任可能故意这么做的!

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
chennemo + 1 赞一个!
31
john_light| | 2012-1-12 22:38 | 只看该作者
养成风格后,习惯成自然。

使用特权

评论回复
32
sedatefire|  楼主 | 2012-1-13 00:49 | 只看该作者
楼主说的是很有道理,这个道理其实大家都懂的!
过多的使用全局变量,程序的可读性,可维护性都很差!
例如楼主说的,他到了新公司,把前人的程序重新写了一边!
其实可以换个角度思考问题的,楼主你的前任程序员,写出一个可 ...
caiwenbin 发表于 2012-1-12 21:18


此言差矣,我希望整个行业的程序员都能够成长起来,代码的可阅读性提高,大家都不必花太多时间纠缠在旧系统的细节当中,我们还有更高层次的主题等待我们去关注:
1.研发的管理,如何避免设计被推翻,如何从应用需求快速地转换成设计文档。
2.如何去构建一个系统。
3.如何定义各个模块的接口,使之协调统一。
4.了解更新的技术,更好的创意。

纠缠在全局变量混乱的旧系统中,对自己的能力是没有帮助的,眼光要长远....

使用特权

评论回复
评分
参与人数 2威望 +2 收起 理由
浮世涤生 + 1 做一件事之前,先要想好何为善,何为恶。为.
w99991888 + 1 说出这话的,绝对是大才!
33
chjmacong| | 2012-1-13 09:13 | 只看该作者
LZ,小弟有个问题:

4.在函数里面开个静态的全局变量,全局数组,是不占用栈空间的。

请问,在函数内部定义的变量,怎么叫全局的呢?单片机中没有用到堆吗?那我想知道,局部变量都存在哪里了?

使用特权

评论回复
34
sedatefire|  楼主 | 2012-1-13 23:18 | 只看该作者
自己顶贴,只为一线研发之声在前线聚齐

使用特权

评论回复
35
程序匠人| | 2012-1-13 23:23 | 只看该作者
楼主说的是很有道理,这个道理其实大家都懂的!
过多的使用全局变量,程序的可读性,可维护性都很差!
例如楼主说的,他到了新公司,把前人的程序重新写了一边!
其实可以换个角度思考问题的,楼主你的前任程序员,写出一个可 ...
caiwenbin 发表于 2012-1-12 21:18


人都是有惰性的,从工程师的角度来说,当然希望怎么省事怎么干。

如果一个公司的程序,可读性差,可维护性差,那么负责技术的主管是有责任的。他应该去着手建立规范,以提高整体的工作效率。

使用特权

评论回复
36
sedatefire|  楼主 | 2012-1-13 23:32 | 只看该作者
楼主说的是很有道理,这个道理其实大家都懂的!
过多的使用全局变量,程序的可读性,可维护性都很差!
例如楼主说的,他到了新公司,把前人的程序重新写了一边!
其实可以换个角度思考问题的,楼主你的前任程序员,写出一个可 ...
caiwenbin 发表于 2012-1-12 21:18
此言差矣,我希望整个行业的程序员都能够成长起来,代码的可阅读性提高,大家都不必花太多时间纠缠在旧系统的细节当中,我们还有更高层次的主题等待我们去关注:
1.研发的管理,如何避免设计被推翻,如何从应用需求快速地转换成设计文档。
2.如何去构建一个系统。
3.如何定义各个模块的接口,使之协调统一。
4.了解更新的技术,更好的创意。
5. 把你的视野,往上下游拓展,采购,物料管理,生产工艺,外观设计,销售,市场反馈,如此,你才能更好地把握自己的产品。
纠缠在全局变量混乱的旧系统中,对自己的能力是没有帮助的,眼光要长远....

使用特权

评论回复
37
Periodic| | 2012-1-15 17:38 | 只看该作者
如果不是万不得已,最好不要使用全局变量

XX以前 也发过 说 尽量不用 全 局变量  挨了不少 板砖!:L

使用特权

评论回复
38
cjseng| | 2012-1-15 21:37 | 只看该作者
全局变量猛于虎,该用时候还的用。:lol
想当初用汇编做程序的时候,都是把变量一个个列出来,按照地址分配好,可全是全局变量啊。
用汇编做一个带多级菜单的液晶显示还要多机通讯,真是一场噩梦!还没有仿真器!程序调试好,单片机插座都换了几个。

使用特权

评论回复
39
cdyywz| | 2012-1-16 14:33 | 只看该作者
有道理,是时候整理一下以前的程序了。

使用特权

评论回复
40
caiwenbin| | 2012-1-16 19:18 | 只看该作者
非常感谢程序匠人和sedatefire 指点!
我已经过了使用大量全局变量的阶段了,但是我的代码,自己读没问题,别人读问题就大了,比使用全局变量更恐怖,我就是一个穷打工的,我境界没那么高,我只能站在自己的角度考虑问题,我们乡下打工的,公司压工资很严重,只能这样做保护一下自己,作为弱势群体那点少得可怜的利益!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则