五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
江口县| 鄄城县| 高邑县| 昭通市| 长白| 南昌市| 石景山区| 贺兰县| 潮州市| 依兰县| 青海省| 鄱阳县| 濮阳县| 株洲市| 罗平县| 房山区| 墨玉县| 清原| 西藏| 台东市| 泾源县| 龙游县| 新田县| 宜黄县| 永平县| 龙川县| 阿城市| 醴陵市| 鹰潭市| 威信县| 宁都县| 嘉善县| 罗田县| 兴安盟| 肇东市| 应用必备| 蕉岭县| 偏关县| 临沂市| 马龙县| 宁波市|