0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你是不是也没躲过这个坑?用了太多全局变量......

朱老师物联网大讲堂 2024-05-01 08:10 次阅读

全局变量太多有哪些弊端?该如何规避,以及如何管理全局变量等。

一、全局变量太多有哪些弊端?

真正做过项目的同学应该都能明白,项目中全局变量太多,会存在很多问题。

这里给大家罗列一些太多全局变量可能存在的弊端:

01

代码可读性差

漫天全局变量,特别是各个源文件都有全部变量的情况下,代码可读性相信你都能明白有多差。

如果再加上命名不规范、随处定义,代码可读性更是不能言语。

02

代码维护难度大

随着全局变量的增多,不同模块的变量名可能会产生冲突或混淆,导致代码难以理解和维护。同时,全局变量使得代码中的依赖关系变得复杂,难以追踪和理解。这增加了新开发人员的学习成本,也增加了修改和调试的难度。

03

可移植性差

全局变量通常与特定的硬件或系统配置紧密相关,各个文件都在调用全局变量,这使得代码的可移植性很差。

再次就是,随着项目的增长和功能的增加,全局变量的管理和维护变得更加困难,这限制了项目的可扩展性。

04

内存管理问题

全局变量太多会导致内存泄漏,以及碎片等诸多问题。

内存泄漏:如果没有适当地管理全局变量的生命周期,可能会导致内存泄漏,特别是在资源受限的单片机环境中。

内存碎片:频繁地分配和释放全局变量相关的内存可能导致内存碎片,降低内存利用效率。

05

潜在Bug

随着全局变量的增多,出现bug的概率越大,多个函数或模块可能同时访问和修改全局变量,如果没有适当的同步机制,会导致数据不一致和难以预测的行为。

一个函数对全局变量的修改可能会影响到其他不相关的函数,这种隐式的副作用使得错误难以定位和修复。

06

不利于模块化设计

如果全局变量在各个模块中穿插使用,不仅破坏了模块的独立性,还使得模块之间的耦合度增加,降低了代码的可重用性和可维护性。

通常来说,模块化设计的代码,不会存在全局变量,或者很少有全局变量。

07

增加调试难度

在单元测试测试,或项目全局测试时,全局变量的状态管理变得复杂。测试人员需要确保在每次测试之前全局变量处于正确的状态。如果全局变量的修改可能发生在代码的多个位置,这使得调试时难以确定问题的根源。

08

更多弊端

以上是常见的弊端,还有哪些弊端,大家可以留言讨论。

二、全局变量太多如何规避?

33882c4e-074f-11ef-9118-92fbcf53809c.png

全局变量太多有诸多弊端,那么如何规避呢?

01

使用静态局部变量

在某些情况下,可以使用静态局部变量来替代全局变量,这样就避免了其他地方修改全局变量。

02

使用指针和引用

在函数内部,可以通过指针或引用来访问和修改外部变量的值,而无需直接声明为全局变量。

03

使用函数参数

在函数内部,尽量使用局部变量来存储临时数据,而不是依赖全局变量。

通过函数参数来传递需要的数据,并通过返回值来获取结果,而不是直接访问或修改全局变量。

04

封装和模块化

将相关的变量和函数封装在结构体或类中,通过接口进行访问和修改。

将代码划分为多个模块,每个模块负责特定的功能,并通过接口与其他模块交互。

05

定期优化代码

一个好的项目,肯定需要是定期维护和优化。比如优化数据结构和算法,减少不必要的全局变量,甚至定期重构部分模块代码。

06

增加审查团队

一般大公司会有专门的代码审查相关的部门,进行定期的代码审查,强调全局变量使用的危害,并鼓励团队成员寻找替代方案。

通过团队协作和讨论,共同寻找最佳实践,也能减少全局变量的使用。

本文转载自公众号|strongerHuang

如有侵权 |联系删除

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68324
  • 全局变量
    +关注

    关注

    1

    文章

    28

    浏览量

    8959
收藏 人收藏

    评论

    相关推荐

    关于全局变量和功能全局变量的创建和使用

    的前面板,如下图: 然后就可以在这个前面板中放置想要的控件了(不同的控件代表不同的数据类型),放置好之后保存这个VI,记住保存的路径,这样全局变量就建好了,如下图: 然后就可以在不同的VI中使用
    发表于 01-25 20:58

    为什么定义的全局变量会变化?

    (){..}还有很多全局变量执行一句跟他毫不相关的语句,他就会变化.....??????难道说全局变量用的太多了....全局变量???? 菜鸟求教.......据说
    发表于 07-31 04:10

    关于全局变量的一些注意事项

    一直听说不要大量使用全局变量,但是全局变量用的太舒服了…不过慢慢写的代码多了,就出现问题,全局变量太多,代码都缺乏艺术感了…同时会造成一些
    发表于 07-16 06:11

    static作用(修饰函数、局部变量全局变量

    详细介绍了static作用(修饰函数、局部变量全局变量)的用法
    发表于 11-17 10:30 4次下载

    Labview之全局变量

    Labview之全局变量,很好的Labview资料,快来下载学习吧。
    发表于 04-19 10:56 0次下载

    从汇编代码访问C全局变量

    12.2 从汇编代码访问 C target=_blank style=cursor:pointer;color:#D05C38;text-decoration:underline;》C 全局变量
    发表于 10-19 09:25 0次下载

    全局变量和局部变量有什么区别

    全局变量是编程术语中的一种,源自于变量之分。变量分为局部与全局,局部变量又可称之为内部变量。局部
    发表于 12-11 11:58 3.2w次阅读
    <b class='flag-5'>全局变量</b>和局部<b class='flag-5'>变量</b>有什么区别

    在C语言中,全局变量滥用的后果是什么

    所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。 全局变量既可以是某对象函数创建,可以是在本程序任何地方创建。全局变量
    发表于 06-24 17:14 1641次阅读

    分析如何远离漫天飞舞的全局变量

    刚刚开始用C或者其他面向对象编程语言(比如C++)的小伙伴们,常常在一个项目里为了图省事,整了很多全局对象、全局变量满天飞,这样做其实是有很多弊端,本文来聊聊这个话题。 先谈谈全局变量
    的头像 发表于 09-15 13:49 1605次阅读

    C语言中局部变量全局变量

    全局变量称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般
    的头像 发表于 10-15 10:48 5427次阅读

    详解LABVIEW中的局部变量全局变量

    本文档的主要内容详细介绍的是LABVIEW初级教程之局部变量全局变量的详细资料说明。
    发表于 03-29 15:00 26次下载

    全局变量被未知原因改变的解决方法

    在开发的过程中总会碰到一些奇怪的问题,仿真的时候一看,发现是某个全局变量被莫名其妙改变了,导致整个函数判断都出了问题。全局变量可能会被改变的原因有以下几点:1.自己改的(废话~):好好查看这个
    发表于 12-20 18:47 27次下载
    <b class='flag-5'>全局变量</b>被未知原因改变的解决方法

    用个简单demo实现对全局变量的管理

    在项目中基本都会遇到全局变量,随便放很容易忘记变量的使用,不方便后续的阅读,就需要对全局变量进行统一管理,下面就用个简单demo,实现对全局变量
    的头像 发表于 11-10 11:01 943次阅读

    RTOS任务间通信为什么不用全局变量

    RTOS任务间通信为什么不用全局变量?原因在于使用全局变量存在诸多弊端。
    发表于 07-05 09:06 798次阅读

    全局变量太多有哪些弊端?

    随着全局变量的增多,不同模块的变量名可能会产生冲突或混淆,导致代码难以理解和维护。同时,全局变量使得代码中的依赖关系变得复杂,难以追踪和理解。这增加了新开发人员的学习成本,增加了修改
    发表于 04-24 09:15 834次阅读