2019独角兽企业重金招聘Python工程师标准>>>

全局变量的应用场景

程序中的某些资源之多能有一个,比如计数器、配置信息、程序运行状态等,而且许多地方需要访问他,那么这个资源就应该,也只能设置成全局变量。在稍微大点的软件中,全局变量基本是不可避免的。

全局变量的问题

  1. 因为到处都可以访问,无形中增加了程序模块之间的耦合度,增大出错概率。

  2. 多线程环境下非常容易出问题。

  3. 变量命名冲突。

  4. 请补充。

面向对象中解决问题了吗?

正因为全局变量不可避免,面向对象语言(如无说明特指c++/java/c#)也提供了全局变量功能——static变量。这个static变量是哪个class也好,属于哪个namespace的也好,你再弄点弯弯绕封装成单例模式也好,他都是全局变量,任何有权限的地方都可以访问。上面所列的三条问题中,前两条,也就是问题最大的两条,根本没有解决。而即使非面向对象语言(C)中,人们也知道把全局变量开头放个g_ 的标记,第三条可以说不是问题。

我的实在是想不出面向对象解决了全局变量的什么问题,因此放了”请补充“这么一条。不过我估计,再怎么补充也无非证明我的观点:面向对象根本无法避免全局变量,全局变量带来的问题也一丁点没有解决。

C语言为了保护全局变量,可以把它生命成static,因此也别拿private说事儿。另外private是个很扯淡的关键字,它对程序健壮性的提高基本为0——C语言没有private也没见哪个变量被不小心修改导致问题。

相信“面向对象能解决全局变量问题“的,往往是新手。因为新手写的程序都很短,看起来所有变量都在一个类中,就以为没有了全局变量。再不就是没思考能力的,别人说什么都信。

转载于:https://my.oschina.net/xiaoguono1/blog/297530

面向对象解决了全局变量问题?相关推荐

  1. java面向对象解决兔子问题_用面向对象的想法解决费波那奇数列的兔子问题

    以前一直用C的思想写的代码和算法.这次突然豁然开朗的感觉,突然明白了面向对象的思想去解决算法 解题思路:利用面向对象的思想 兔子:只有一个字段,就是月数,有一个函数就是成长,当大于三个月之后就产仔. ...

  2. java面向对象解决兔子问题_7-Java面向对象-多态

    多态: 多种形态,面向对象的核心,封装和继承都是为多态而服务的. 位于最后也是最重要的. 本次课程围绕: 什么是多态? 多态在程序设计中的优势? 在Java中如何实现多态? 多态的概念 猫,狗,兔子都 ...

  3. 面向对象解决-------求圆柱体的体积

    /** 0:     (1)定义接口A,里面包含值为3.14的常量PI和抽象方法double area().     (2)定义接口B,里面包含抽象方法void setColor(String c). ...

  4. (JAVA)面向对象编程(基础部分)

    韩顺平老师==>视频链接 文章目录: 1.类与对象 1.1看一个养猫猫问题 1.2使用现有技术解决 1.3现有技术解决的缺点分析 1.4一个程序就是一个世界,有很多事物(对象[属性, 行为]) ...

  5. 八、Java面向对象编程(类、对象、方法、重载、可变参数、作用域、构造器、this本质)

    文章目录 Java面向对象编程(类.对象.方法.重载.可变参数.作用域.构造器.this本质) 一.类与对象 1. 类与对象的引出 2. 使用现有技术解决 3. 现有技术解决的缺点分析 4. 类与对象 ...

  6. 第7章面向对象编程_基础部分

    1.类与对象 1.0 介绍 张老太养了两只猫猫:一只名字叫小白,今年 3 岁,白色.还有一只叫小花,今年 100 岁,花色.请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色.如果用 ...

  7. java基础快速入门--面向对象(基础)

    类与对象 看一个养猫问题 张老太养了两只猫:一只名字叫小白,今年三岁,白色.还有一只叫小花,今年一百岁,花色.请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色.如果用户输入的小猫名 ...

  8. java零基础Ⅰ-- 6.面向对象编程(基础部分)

    java零基础Ⅰ-- 面向对象编程(基础部分) 类与对象 类与对象引出 类与对象概述 快速入门 类与对象的区别和联系 对象在内存中存在形式 属性/成员变量/字段 注意事项和细节说明 如何创建对象 如何 ...

  9. 【学习笔记63】轮播图 —— 面向对象

    目录 一.案例效果 二.轮播图的分析 (一)面向对象书写的小技巧 (二)面向过程 (三)面向对象 三.HTML和CSS代码 四.JS代码分析 (一)ES6 class类的使用 (二) 添加焦点 (三) ...

最新文章

  1. 【按住你的心】——Android开发CheckBoxRadioButton控件的简单使用
  2. 21天精通python-21天学通Python 完整pdf扫描版[58MB]
  3. [cocos2d-x·总结]关于cocos2d-x几种画图方法的用法与思考
  4. 【Linux】一步一步学Linux——alias命令(205)
  5. 计算机二级语义网络的研究现状与展望,计算机二级access选择题题库研究.doc
  6. vue-router之路由属性配置说明
  7. 20175320 2018-2019-2 《Java程序设计》第6周学习总结
  8. CF 964C Alternating Sum
  9. 1、安装Lync Server 2013前的准备工作
  10. Xposed (二) 深入Module
  11. Kepware AB驱动 · 秒懂百科
  12. RTMP协议及H264文件格式分析
  13. 高通工具过滤_高通QXDM|高通诊断监视工具(Qualcomm QXDM)下载v3.14 官方版 - 欧普软件下载...
  14. 超难打地鼠 【安卓游戏】
  15. 《学会提问》——价值观假设和描述性假设
  16. 周小川深度解读:DC/EP和数字人民币e-CNY
  17. 情人节程序员用HTML网页表白【制作属于我们的爱情相册网页】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  18. 获取名字首字母,js
  19. 用Python画中国地图,实现各省份数据可视化!可视化简直了!
  20. 4 支付宝手机网站支付demo讲解

热门文章

  1. 计算机网页设计布局与排版研究,论计算机网页设计的布局与排版
  2. 学生管理系统(C语言版)
  3. 关于60枚一分两分五分硬币凑成一块钱的解决方法
  4. java不能对什么类型进行转换_关于java:“不兼容类型:void无法转换为…”是什么意思?...
  5. java打包_java工程打包(方式一)
  6. 【jquery】用jsp写jquery的模板
  7. 【java】兴唐第二十九节课作业
  8. etw系统provider事件较多_【Flutter 实战】文件系统目录
  9. Linux下用于查看系统当前登录用户信息的4种方法
  10. 奇怪吸引子---QiChen