全局变量造成的耦合

本文通过一个实际案例探讨了全局变量在程序中的使用风险,特别是在函数间通过全局变量传递数据时可能出现的问题,并提出了减少全局变量使用的建议。

        今天在修改一个前人的程序时,碰到这么一个问题。由于去掉了某个功能,我需要注释掉一个函数A,在运行中报了一个莫名其妙的错误,令我百思不得其解,万般无奈下,只好调试程序,最终发现问题出在一个全局变量上,这个值只有在那个被注释掉的函数内赋了一个合法值后,另外一个函数B才能顺利进行。在这里,两个函数通过这个全局变量耦合在了一起,我只考虑到注释掉函数A,却没有想到它的变化引起了全局变量的变化,进而引起了函数B的变化。因为全局函数是全局的,任何地方都可以访问,而这种访问往往也很难追踪,所以牵一发动全身也就不足为奇了。

        后来我想如果尽量把全局变量设为const,让其它地方只能读不能写,不就较少了各模块间的耦合了吗,但又发现,如果某一天我需要修改它的初始值,相关地方还是可能变化。所以难怪听说JAVA要取消万恶的全局变量

       其实从面向对象的思想考虑,一个独立不被封装的数据,也是不合理的.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值