“慎用全局变量,包括全局静态变量“ 是众所周知的原则,因为全局变量除了会增加程序的维护成本。

如果全局变量是个复杂的对象,并且还使用其他的全局变量,那情况就变得复杂的多。因为全局变量初始化的顺序不是coder所能掌控的。

而初始化全局变量就是所谓的”dynamic initializer“,即动态初始化。把全局变量局部化,可以解决全局变量之间的依赖引起的初始化顺序不确定的问题。

比如:

static OSD_Environment env1("CSF_UnitsLexicon");

可以写成:

OSD_Environment& get_env1()
{
    static OSD_Environment env1("CSF_UnitsLexicon");
    return env1;
}

最新文章

  1. [LeetCode] Binary Tree Inorder Traversal 二叉树的中序遍历
  2. 基于webdriver的jmeter性能测试-Selenium IDE
  3. 《Matrix Computation 3rd》读书笔记——第2章 矩阵分析
  4. Eclipse+CDT+GDB调试android NDK程序(转)
  5. 配置Android SDK 开发环境(转)
  6. 循环获取json对象的属性名
  7. JavaScript 再认识(一):Function调用模式对this的影响
  8. vue 2 仿IOS 滚轮选择器 从入门到精通 (一)
  9. 大数据Hadoop学习之了解Hadoop(1)
  10. ABP拦截器之UnitOfWorkRegistrar(一)
  11. Python学习笔记六
  12. 大学生对vivo手机的看法
  13. 从创业者角度看《印度合伙人 Padman》后的一点感受
  14. Stopwatch + C#打印日志方法
  15. [java,2017-05-04] 合并word文档
  16. LDAP - 轻量目录访问协议
  17. 16-Python3 条件控制
  18. 如何正确认识Docker Kubernetes 和 Apache Mesos
  19. 如何把OpenWrt安装到PC?
  20. 冒泡排序实现(Java)

热门文章

  1. PyQuery用法详解
  2. requests+正则表达式爬取ip
  3. 1102mysql关于SOCK文件的认识
  4. Linux下的MySQL5.7.14启动方法
  5. 031718-js变量、数据类型、运算符
  6. [HAOI2015]数字串拆分
  7. [Codeforces]856E - Satellites
  8. 计蒜客NOIP2017提高组模拟赛(五)day2-成绩统计
  9. 【Python系列】HDF5文件介绍
  10. 几种常用hash算法及原理