使用变量_为何不建议使用全局变量?

全局变量可能导致无意修改、命名冲突、别名问题、并发问题等。文章建议尽量避免使用全局变量,若必须使用,应制定规范,使用访问器,并避免用其存放中间结果。提倡正确管理和测试全局变量以提高代码质量。
摘要由CSDN通过智能技术生成

全局变量(Global Variables)是指程序中任意地方都能访问的变量。有时,那些作用域比局部变量(local variables)更广的变量也可比作是全局变量:例如类中可以任意访问的变量。

有经验的程序员会尽可能避免使用全局变量。为何不建议使用全局变量?基于代码大全中的“13.3全局数据”和网上的一些相关资料,这里做一些简单的整理和小结。

常见的与全局变量有关的问题

  • 无意间的修改
  • 命名冲突
  • 奇异的别名(Aliasing)
  • 并发(Concurrency)的问题
  • 初始化的顺序
  • 阻碍了代码的复用
  • 干扰了模块化

无意间修改了全局变量

个人比较喜欢的说法是,你不知道全局变量什么时候被修改了。其产生的后果有:

  1. 难以理解
  2. 产生歧义
  3. 破坏了代码封装
  4. 难以测试
int global_variable = 0;

int main() {
    
    global_variable = 1;
    int increased = inc_global_variable(5);
    int sum = global_variable + increased;

    printf("Sum is : %d n", sum);
    return 0;
}

乍一看认为sum的值应该是6,但结果是12,因为函数inc_global_variable中修改了global_variable的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值