最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C++為什么不提倡使用單例模式?

2023-10-23 15:54 作者:大方老師單片機(jī)課堂  | 我要投稿

C++為什么不提倡使用單例模式?


我是不提倡C++當(dāng)中使用單例模式的,在很早以前寫過一個(gè)答案提過關(guān)于單例的問題。

正好最近有個(gè)朋友剛翻譯了C++ core guidelines,里面的I.3也提了單例模式的危害,直接用“避免單例”作為標(biāo)題,今天可以稍微展開聊聊為什么單例在C++中不推薦。最近很多小伙伴找我,說想要一些C++資料,然后我根據(jù)自己從業(yè)十年經(jīng)驗(yàn),熬夜搞了幾個(gè)通宵,精心整理了一份「C++專業(yè)入門到高級(jí)教程+工具包」,點(diǎn)個(gè)關(guān)注,全部無償共享給大家!?。?/p>

評(píng)論區(qū)回復(fù)“888”,關(guān)注我之后私信回復(fù)“666”,即可拿走。

首先,我們得先討論全局變量的危害。由于全局變量完全破壞了RAII的封裝性,像神一樣直接干涉萬(wàn)物。在C++ core guidelines里列舉了以下四點(diǎn):

測(cè)試性

你無法孤立地測(cè)試你的實(shí)體。如果單元不存在,那么單元測(cè)試也將不存在。你只能進(jìn)行系統(tǒng)測(cè)試。實(shí)體的執(zhí)行效果要依賴整個(gè)系統(tǒng)的狀態(tài)。

重構(gòu)

因?yàn)槟銦o法孤立地對(duì)代碼進(jìn)行推理,重構(gòu)它會(huì)相當(dāng)有挑戰(zhàn)。

優(yōu)化

你無法輕易地重新安排函數(shù)的調(diào)用或者在不同的線程上進(jìn)行函數(shù)調(diào)用,因?yàn)榭赡苡须[藏的依賴。緩存之前的函數(shù)調(diào)用結(jié)果也極為危險(xiǎn)。

并發(fā)

產(chǎn)生數(shù)據(jù)競(jìng)爭(zhēng)的必要條件是有共享而可變的狀態(tài),而非const全局變量正是共享而可變的。

拾人牙慧部分結(jié)束:

代碼要對(duì)輸入輸出負(fù)責(zé),當(dāng)依賴全局的變量來作為輸入或者輸出的單元的時(shí)候,誰(shuí)也不知道有誰(shuí)的惡心代碼用什么惡心的姿勢(shì)把全局變量的值在啥時(shí)候給tm改了??蓽y(cè)試性無從談起,可重用性基本為0,模塊化、可維護(hù)性也幾乎為零,可讀性蕩然無存。


C++為什么不提倡使用單例模式?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
日照市| 开平市| 杭锦后旗| 长顺县| 桂平市| 金寨县| 哈密市| 泌阳县| 凤城市| 嵊泗县| 巢湖市| 大余县| 桐城市| 屯昌县| 乌拉特前旗| 泗洪县| 施甸县| 白银市| 乐清市| 临高县| 红安县| 阿克苏市| 洛宁县| 陇西县| 图们市| 平塘县| 邮箱| 拜城县| 湟源县| 盐津县| 安龙县| 静宁县| 峡江县| 正蓝旗| 新巴尔虎右旗| 吉安县| 南投市| 大余县| 托里县| 永定县| 安达市|