网站首页 > 博客文章 正文
C++为什么不提倡使用单例模式?
我是不提倡C++当中使用单例模式的,在很早以前写过一个答案提过关于单例的问题。
正好最近有个朋友刚翻译了C++ core guidelines,里面的I.3也提了单例模式的危害,直接用“避免单例”作为标题,今天可以稍微展开聊聊为什么单例在C++中不推荐。最近很多小伙伴找我,说想要一些C++资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C++专业入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!
评论区回复“888”,关注我之后私信回复“666”,即可拿走。
首先,我们得先讨论全局变量的危害。由于全局变量完全破坏了RAII的封装性,像神一样直接干涉万物。在C++ core guidelines里列举了以下四点:
可测试性
你无法孤立地测试你的实体。如果单元不存在,那么单元测试也将不存在。你只能进行系统测试。实体的执行效果要依赖整个系统的状态。
重构
因为你无法孤立地对代码进行推理,重构它会相当有挑战。
优化
你无法轻易地重新安排函数的调用或者在不同的线程上进行函数调用,因为可能有隐藏的依赖。缓存之前的函数调用结果也极为危险。
并发
产生数据竞争的必要条件是有共享而可变的状态,而非const全局变量正是共享而可变的。
拾人牙慧部分结束:
代码要对输入输出负责,当依赖全局的变量来作为输入或者输出的单元的时候,谁也不知道有谁的恶心代码用什么恶心的姿势把全局变量的值在啥时候给tm改了。可测试性无从谈起,可重用性基本为0,模块化、可维护性也几乎为零,可读性荡然无存。
猜你喜欢
- 2024-10-01 操作系统 : 按优先数调度算法实现处理器调度(C++)
- 2024-10-01 c++ 疑难杂症(13) allocator(c++ catch all exception)
- 2024-10-01 百度C++工程师的那些极限优化(内存篇)
- 2024-10-01 C++20 香不香?从四大新特性看起(c++20支持)
- 2024-10-01 用C++11打造智能观察者模式:详解实现步骤完整示例代码
- 2024-10-01 网络编程:手绘TCP状态机(tcp状态转换图详解)
- 2024-10-01 智能系统机器人!C++实现三阶魔方自动求解程序源码
- 2024-10-01 ChaosBlade 发布对 C++ 应用混沌实验的支持
- 2024-10-01 C/C++编程笔记:C++智能指针及其类型的介绍!重点分析
- 2024-10-01 c++电子版书(c++电子书pdf百度云)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)