`

C编程经验之全局变量猛于虎

 
阅读更多

转自:http://forum.eet-cn.com/FORUM_POST_10011_1200219783_0.HTM?click_from=8800088842,9950095320,2011-12-26,EECOL,FORUM_ALERT&jumpto=view_welcomead_forum_1324861650415

       工作也有些年头了,从一位技术新人成长到现在自诩小牛级别的人物,少不了要自己寻找资料阅读。论坛上、书店里、杂志上......要嘛是些菜鸟浅薄的自炫处女贴,要嘛是高屋建瓴云里来 雾里去的概念文,好不容易遇到个实践型高手写的文章,却在渐入佳境之际嘎然而止。本是隔靴搔痒,看完后心中更是郁结不已。也罢,今日强装回大牛,献丑谈一谈单片机编程中全局变量问题吧。

        单片机程序最易范的错误是 全局变量到处飞, 这个现象在早期写汇编转型过来的程序员以及初学者中常见,这帮家伙几乎把全局变量当作函数形参来用,多数的.h文档里面一堆的结构体定义和extern, 这个模块里边赋值123,那个模块里边判断123分支决定做什么。每当看到这种程序,我总要戚眉变脸而后拍桌喝骂。我不否认全局变量的重要性,但我认为要 谨慎地使用它,滥用全局变量会引申带来其它更为严重的结构性问题。诸位看官,且听我细细道来。

1 它会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来将万分吃力。

2.它会导致软件分层的不合理,全局变量相当于一条快捷通道,它使得程序员模糊了“设 备层”和“应用层”之间的边界。写出来的底层程序容易多情地关注起上层的应用。这在软件系统的初期或许功能调试进度一日千里,但到了后期往往bug一堆, 处处“补丁”,雷区遍布。说是度日如年举步维艰,也不夸张的。

3.由于软件的分层不合理,到了后期维护,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺地修改,涉及大多数模块,而原有的代码注释却忘了更新修改,这个时候,交给后来维护者的系统会越来越像一个“泥潭”,注释的唯一作用就是为了使泥潭上方充满迷烟瘴气。

4.不必多言,你已经成功得到一个畸形的系统,它 处于一个神秘的稳定状态!

 
然后我告诉大家现实意义的后果是什么。

1.“老人”气昂昂,因为系统离不开他,所有“雷区”只有他了然于心。当出现紧急的bug时,只有他能够搞定。你不但不能辞退他,还要给他加薪。

2.新人见光死,但凡招聘来维护这个系统的,除了改出更多的bug外,基本上一个月内就走人,到了外面还宣扬这个公司的软件质量有够差够烂。

3.虽然产品的升级,几个月没有接触这个系统的原创者会发现,很多雷区他本人也忘记 了,每次的产品升级周期越来越长,因为修改一个功能会冒出很多bug,而按下一个bug,会弹出其他更多的bug,在这期间,会产生更多的全局变量。有一 天他告诉老板,不行啦不行啦,资源不够了,ram或者flash空间太小了,升级升级。

4.客户投诉不断,售后快崩溃了,业务员也尽量不推荐此产品了,市场份额越来越小,公司形象越来越糟糕。
 
要问我的对策吗,只有两个原则:

1.能不用全局变量尽量不用,我想除了系统参数、通信处理和一些需要效率的处理模块,其他的基本可以靠合理的软件分层和编程技巧来解决。

2.如果用了,能藏多深就藏多深。如果只有该.c文件用,就static到该文件中,顺便把结构体定义也收进来;如果只有一个函数用,那就static到函数里面去;如果非要开放出去让人读取,那就用函数return出去,这样就是只读属性了;如果非要遭人蹂躏赋值,好吧,我还可以严格控制我的.h档被谁包含,而不是放到公共的includes.h中被人围观,丢人现眼。

        如此,你可明白我对全局变量的感悟有多深刻。悲催的我,已经把当年那些老人交给我维护的那些案子加班重新翻写了。你能明白吗,请不要让人背后唾弃你。

 

其实不光全局变量,写的不好的代码都会带来这些问题。

分享到:
评论

相关推荐

    嵌入式C编程经验之全局变量猛于虎

    ### 嵌入式C编程经验之全局变量的潜在风险 #### 一、全局变量的滥用及其危害 在嵌入式开发尤其是针对无操作系统(OS-less)环境下的单片机编程过程中,全局变量的不当使用常常成为导致项目失败或难以维护的重要...

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

    嵌入式C编程经验之全局变量猛于虎 本文探讨了嵌入式C编程中全局变量的使用问题,强调了滥用全局变量可能带来的严重结构性系统问题。文章从四个方面详细分析了全局变量的弊端:1)不必要的常量频繁使用,2)软件分层...

    单片机C编程经验之全局变量猛于虎

    全局变量在单片机C编程中的使用是一门微妙的艺术,其影响深远且复杂。这篇文章主要探讨了全局变量滥用带来的问题,并给出了相应的解决策略。 首先,全局变量可能导致代码可读性降低。当一个常量作为全局变量使用而...

    中学安全教育主题班会《事故猛于虎 安全重如山》课件

    【中学安全教育主题班会《事故猛于虎 安全重如山》课件】着重强调了交通安全的重要性,通过对一系列交通事故案例的分析,警示学生们安全教育的必要性。以下是课件中涉及的主要知识点: 1. **交通事故的危害性**:...

    2007高考满分作文:国语失落症猛于虎(湖北).doc

    这篇高考满分作文“国语失落症猛于虎”揭示了一个重要的社会现象——在全球化进程中,中文的使用和地位正遭受挑战。作者通过一系列日常生活中的观察,表达了对母语逐渐边缘化的忧虑。 首先,作者提到家中电脑出现...

    小学六年级主题班会车祸猛于虎交通安全PPT学习教案.pptx

    "车祸猛于虎"这个主题警示我们,交通事故的严重性堪比猛虎,一旦发生,可能导致不可逆的伤害甚至生命丧失。小学六年级的主题班会正是为了引导孩子们认识到交通安全的重要性,让他们从小养成遵守交通规则的习惯。 ...

    “车祸猛于虎”全救每年120万人死于车祸.docx

    标题和描述中提到的“车祸猛于虎”全救每年120万人死于车祸,这一数据揭示了全球道路交通安全的严峻形势。交通安全,特别是技术安全,在这个领域扮演着至关重要的角色。道路交通事故不仅造成大量人员伤亡,还对全球...

    网络危害猛于虎(课件)

    ### 网络危害猛于虎——全面解析网络风险及防范措施 #### 一、引言 随着互联网技术的飞速发展,网络已经成为人们日常生活中不可或缺的一部分。它为我们提供了便捷的信息获取渠道、丰富的娱乐资源以及高效的沟通...

    铜价猛于虎,利润遭打劫.doc

    根据提供的文档标题、描述、标签以及部分内容来看,虽然标题与描述看似与IT技术不直接相关,但是实际内容涉及到了HTTP 404.11错误,这是一个典型的Web服务器配置问题。下面将对这一知识点进行详细解析。...

    《桃花源记》《苛政猛于虎》比较阅读及答案-苛政猛于虎阅读答案.docx

    “苛政猛于虎也”的“苛政”指繁重的政令,而“猛于虎”则是比老虎还要凶猛的意思。 在解答相关问题时,我们需要理解文章的主题和人物行为背后的意义。桃花源人不愿意离开是因为他们享受着安宁和自由;泰山妇人尽管...

    古城煤矿乏风氧化供热的技术分析

    煤炭行业素有"瓦斯猛于虎"之说,但甲烷却是每立方米含有35.9MJ热值的清洁能源,文章通过分析乏风氧化装置结构、工作原理及其供热原理,结合古城煤矿瓦斯抽放情况及乏风量分析乏风氧化供热替代燃煤锅炉的技术可行性。

    湖北2007年高考满分作文:国语失落症猛于虎.doc

    这篇高考满分作文以“国语失落症猛于虎”为主题,揭示了在信息化时代,母语——中文在日常生活中的逐渐边缘化现象。作者通过几个生活中的小细节,展现了这一问题的严重性。 首先,作者提到家中的电脑因感染病毒显示...

    小学生安全教育课件ppt课件PPT教案.pptx

    车祸对学生的威胁极大,被比喻为“猛于虎”。数据显示,每年有相当数量的中小学生因交通事故丧生,这强调了交通安全教育的必要性。课件通过提问和展示图片,如“这样骑自行车安全吗?”引导学生思考日常生活中可能...

    4-政-1天-学员-媒体关系与危机应对.pptx

    在媒体关系方面,课程强调了"媒体猛于虎"的概念,即媒体具有强大的影响力,能够瞬间放大事件的影响,既可能成为推动正面形象的力量,也可能导致负面新闻的扩散。领导者必须学会理解和尊重媒体的特性,包括其真实性、...

    小学生安全教育课件 (2).ppt

    首先,我们要明白“车祸猛于虎”的严重性。全球范围内,交通事故造成的死亡人数远超战争,而我国中小学生每年都有相当数量因交通意外失去生命。例如,2005年,我国有4205名中小学生因交通事故丧生,这意味着几乎每天...

    事故案例心得体会.docx

    事故猛于虎,安全大于天,这是每个企业和员工都应牢记的信条。从吉林宝源丰禽业公司的火灾到江苏昆山中荣金属制品公司的粉尘爆炸,再到山东青岛的输油管道爆炸,这些事故不仅夺走了生命,也给无数家庭带来了不可弥补...

    中学生安全演讲.pdf

    1. **交通安全**:交通事故被比喻为“猛于虎”,对中学生来说,了解交通规则,如遵守交通信号、不在道路上追逐打闹、不随意横穿马路,以及乘坐交通工具时的安全行为,如系好安全带,是防止交通事故发生的必要措施。...

    小学生安全教育PPT教学课件.pptx

    以“车祸猛于虎!”为警示,揭示了交通事故对儿童生命的威胁。据统计,每年有超过4205名中小学生因交通事故失去生命,这意味着每天有12个孩子因此离世。课件通过一系列实例和讨论,引导学生认识到日常生活中可能存在...

    中学生消防安全主题班会PPT课件.pptx

    这提醒我们必须认识到“火灾猛于虎”,提高预防意识,避免因疏忽引发的灾难。 在【火灾诱因】部分,课件提到了日常生活中可能引起火灾的因素,如违规使用电器设备(如“热得快”),以及孔明灯、烟头等易燃物品的...

    中学生消防安全主题班会学习教案.pptx

    因此,提高学生的火灾预防意识至关重要,要让学生理解“火灾猛于虎,火过人财空”的道理。 教案中强调了火灾预防的重要性,包括了解日常生活中的火灾诱因,如不正确的烟蒂处理、孔明灯的不当使用等。学生通过小组...

Global site tag (gtag.js) - Google Analytics