国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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ó)家法律
祥云县| 离岛区| 孙吴县| 额济纳旗| 定陶县| 长汀县| 堆龙德庆县| 名山县| 于都县| 高邮市| 南康市| 霍邱县| 桐庐县| 北安市| 叙永县| 贺兰县| 蒲江县| 洛扎县| 盘山县| 历史| 梁河县| 辽源市| 景宁| 吴川市| 姜堰市| 平和县| 清河县| 察雅县| 高碑店市| 山丹县| 长垣县| 山阴县| 息烽县| 剑阁县| 陆丰市| 大庆市| 贵州省| 马关县| 湖南省| 德令哈市| 麻阳|