`

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编程领域,全局变量的运用是一个复杂且需慎重考虑的问题。它们在单片机os-less程序设计中尤为常见,但是一旦不当使用,全局变量便如同猛虎一般,可能对系统稳定性和程序维护性造成极大威胁。本文将深入探讨...

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

    在单片机C编程的世界里,全局变量是一把双刃剑。一方面,它们似乎简化了代码结构,降低了程序间的通信成本;另一方面,它们又像无形的锁链,逐渐束缚了程序的健壮性和可维护性。在初学编程时,我们总被告诫要避免...

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

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

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

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

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

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

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

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

    网络危害猛于虎(课件)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    金于虎:微信小程序认知、安装与demo学习摘要

    一:认知 1. 技术架构 (此图片来源于网络,如有侵权,请联系删除! ) 2.前端的视图 wxss 样式定义类似css的样式表,定义页面元素的样式 wxml ...更多的是做渲染 js 触发事件 定义触发后又后端的那些程序来处理 ...

    参观安全事故警示教育学习心得.pdf

    “事故猛于虎”,每一次的事故都是一次警钟,提醒我们必须始终把安全放在首位。但遗憾的是,我们有时会重蹈覆辙,忽视了那些曾经付出的代价,再次埋下事故的种子。因此,无论是工作还是生活中,我们都要时刻保持警惕...

    银行消防安全常识之预防火灾学习教案.pptx

    火灾猛于虎,其破坏力惊人。根据数据,我国每年都有大量的火灾发生,造成人员伤亡和巨大的经济损失。火灾分为四个等级,根据死亡人数、重伤人数和财产损失的程度来划分,分别是特别重大火灾、重大火灾、较大火灾和...

    企业消防安全培训课件.pptx

    这提醒我们,火灾猛于虎,消防安全不能有丝毫懈怠。据统计,近年来我国每年发生的火灾数量和造成的损失巨大,因此提高消防平安意识至关重要。 了解基本的消防知识是预防火灾的基础。燃烧是一种氧化反应,需要具备三...

    厂区宣传标语大全.doc

    5. 预防为主,防微杜渐:“小失误诱发大事故”、“隐患猛于虎”,强调了预防的重要性,任何小的疏忽都可能引发大的灾难,因此要时刻警惕,消除安全隐患。 6. 呼吁自我保护和团队协作:“只有做到‘三不伤害’才能...

Global site tag (gtag.js) - Google Analytics