在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

你是不是也沒躲過這個(gè)坑?用了太多全局變量......

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-05-01 08:10 ? 次閱讀

全局變量太多有哪些弊端?該如何規(guī)避,以及如何管理全局變量等。

一、全局變量太多有哪些弊端?

真正做過項(xiàng)目的同學(xué)應(yīng)該都能明白,項(xiàng)目中全局變量太多,會(huì)存在很多問題。

這里給大家羅列一些太多全局變量可能存在的弊端:

01

代碼可讀性差

漫天全局變量,特別是各個(gè)源文件都有全部變量的情況下,代碼可讀性相信你都能明白有多差。

如果再加上命名不規(guī)范、隨處定義,代碼可讀性更是不能言語。

02

代碼維護(hù)難度大

隨著全局變量的增多,不同模塊的變量名可能會(huì)產(chǎn)生沖突或混淆,導(dǎo)致代碼難以理解和維護(hù)。同時(shí),全局變量使得代碼中的依賴關(guān)系變得復(fù)雜,難以追蹤和理解。這增加了新開發(fā)人員的學(xué)習(xí)成本,也增加了修改和調(diào)試的難度。

03

可移植性差

全局變量通常與特定的硬件或系統(tǒng)配置緊密相關(guān),各個(gè)文件都在調(diào)用全局變量,這使得代碼的可移植性很差。

再次就是,隨著項(xiàng)目的增長(zhǎng)和功能的增加,全局變量的管理和維護(hù)變得更加困難,這限制了項(xiàng)目的可擴(kuò)展性。

04

內(nèi)存管理問題

全局變量太多會(huì)導(dǎo)致內(nèi)存泄漏,以及碎片等諸多問題。

內(nèi)存泄漏:如果沒有適當(dāng)?shù)毓芾砣肿兞康纳芷冢赡軙?huì)導(dǎo)致內(nèi)存泄漏,特別是在資源受限的單片機(jī)環(huán)境中。

內(nèi)存碎片:頻繁地分配和釋放全局變量相關(guān)的內(nèi)存可能導(dǎo)致內(nèi)存碎片,降低內(nèi)存利用效率。

05

潛在Bug

隨著全局變量的增多,出現(xiàn)bug的概率越大,多個(gè)函數(shù)或模塊可能同時(shí)訪問和修改全局變量,如果沒有適當(dāng)?shù)耐綑C(jī)制,會(huì)導(dǎo)致數(shù)據(jù)不一致和難以預(yù)測(cè)的行為。

一個(gè)函數(shù)對(duì)全局變量的修改可能會(huì)影響到其他不相關(guān)的函數(shù),這種隱式的副作用使得錯(cuò)誤難以定位和修復(fù)。

06

不利于模塊化設(shè)計(jì)

如果全局變量在各個(gè)模塊中穿插使用,不僅破壞了模塊的獨(dú)立性,還使得模塊之間的耦合度增加,降低了代碼的可重用性和可維護(hù)性。

通常來說,模塊化設(shè)計(jì)的代碼,不會(huì)存在全局變量,或者很少有全局變量。

07

增加調(diào)試難度

在單元測(cè)試測(cè)試,或項(xiàng)目全局測(cè)試時(shí),全局變量的狀態(tài)管理變得復(fù)雜。測(cè)試人員需要確保在每次測(cè)試之前全局變量處于正確的狀態(tài)。如果全局變量的修改可能發(fā)生在代碼的多個(gè)位置,這使得調(diào)試時(shí)難以確定問題的根源。

08

更多弊端

以上是常見的弊端,還有哪些弊端,大家可以留言討論。

二、全局變量太多如何規(guī)避?

33882c4e-074f-11ef-9118-92fbcf53809c.png

全局變量太多有諸多弊端,那么如何規(guī)避呢?

01

使用靜態(tài)局部變量

在某些情況下,可以使用靜態(tài)局部變量來替代全局變量,這樣就避免了其他地方修改全局變量。

02

使用指針和引用

在函數(shù)內(nèi)部,可以通過指針或引用來訪問和修改外部變量的值,而無需直接聲明為全局變量。

03

使用函數(shù)參數(shù)

在函數(shù)內(nèi)部,盡量使用局部變量來存儲(chǔ)臨時(shí)數(shù)據(jù),而不是依賴全局變量。

通過函數(shù)參數(shù)來傳遞需要的數(shù)據(jù),并通過返回值來獲取結(jié)果,而不是直接訪問或修改全局變量。

04

封裝和模塊化

將相關(guān)的變量和函數(shù)封裝在結(jié)構(gòu)體或類中,通過接口進(jìn)行訪問和修改。

將代碼劃分為多個(gè)模塊,每個(gè)模塊負(fù)責(zé)特定的功能,并通過接口與其他模塊交互。

05

定期優(yōu)化代碼

一個(gè)好的項(xiàng)目,肯定需要是定期維護(hù)和優(yōu)化。比如優(yōu)化數(shù)據(jù)結(jié)構(gòu)和算法,減少不必要的全局變量,甚至定期重構(gòu)部分模塊代碼。

06

增加審查團(tuán)隊(duì)

一般大公司會(huì)有專門的代碼審查相關(guān)的部門,進(jìn)行定期的代碼審查,強(qiáng)調(diào)全局變量使用的危害,并鼓勵(lì)團(tuán)隊(duì)成員尋找替代方案。

通過團(tuán)隊(duì)協(xié)作和討論,共同尋找最佳實(shí)踐,也能減少全局變量的使用。

本文轉(zhuǎn)載自公眾號(hào)|strongerHuang

如有侵權(quán) |聯(lián)系刪除

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4858

    瀏覽量

    69553
  • 全局變量
    +關(guān)注

    關(guān)注

    1

    文章

    28

    瀏覽量

    9026
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于全局變量和功能全局變量的創(chuàng)建和使用

    的前面板,如下圖: 然后就可以在這個(gè)前面板中放置想要的控件了(不同的控件代表不同的數(shù)據(jù)類型),放置好之后保存這個(gè)VI,記住保存的路徑,這樣全局變量就建好了,如下圖: 然后就可以在不同的VI中使用
    發(fā)表于 01-25 20:58

    為什么定義的全局變量會(huì)變化?

    (){..}還有很多全局變量執(zhí)行一句跟他毫不相關(guān)的語句,他就會(huì)變化.....??????難道說全局變量用的太多了....全局變量???? 菜鳥求教.......據(jù)說
    發(fā)表于 07-31 04:10

    關(guān)于全局變量的一些注意事項(xiàng)

    一直聽說不要大量使用全局變量,但是全局變量用的太舒服了…不過慢慢寫的代碼多了,就出現(xiàn)問題,全局變量太多,代碼都缺乏藝術(shù)感了…同時(shí)會(huì)造成一些
    發(fā)表于 07-16 06:11

    static作用(修飾函數(shù)、局部變量全局變量

    詳細(xì)介紹了static作用(修飾函數(shù)、局部變量全局變量)的用法
    發(fā)表于 11-17 10:30 ?4次下載

    Labview之全局變量

    Labview之全局變量,很好的Labview資料,快來下載學(xué)習(xí)吧。
    發(fā)表于 04-19 10:56 ?0次下載

    從匯編代碼訪問C全局變量

    12.2 從匯編代碼訪問 C target=_blank style=cursor:pointer;color:#D05C38;text-decoration:underline;》C 全局變量
    發(fā)表于 10-19 09:25 ?0次下載

    全局變量和局部變量有什么區(qū)別

    全局變量是編程術(shù)語中的一種,源自于變量之分。變量分為局部與全局,局部變量又可稱之為內(nèi)部變量。局部
    發(fā)表于 12-11 11:58 ?3.3w次閱讀
    <b class='flag-5'>全局變量</b>和局部<b class='flag-5'>變量</b>有什么區(qū)別

    在C語言中,全局變量濫用的后果是什么

    所創(chuàng)建的變量通常都是局部變量,只能被內(nèi)部引用,而無法被其它對(duì)象或函數(shù)引用。 全局變量既可以是某對(duì)象函數(shù)創(chuàng)建,可以是在本程序任何地方創(chuàng)建。全局變量
    發(fā)表于 06-24 17:14 ?1703次閱讀

    分析如何遠(yuǎn)離漫天飛舞的全局變量

    剛剛開始用C或者其他面向?qū)ο缶幊陶Z言(比如C++)的小伙伴們,常常在一個(gè)項(xiàng)目里為了圖省事,整了很多全局對(duì)象、全局變量滿天飛,這樣做其實(shí)是有很多弊端,本文來聊聊這個(gè)話題。 先談?wù)?b class='flag-5'>全局變量
    的頭像 發(fā)表于 09-15 13:49 ?1748次閱讀

    C語言中局部變量全局變量

    全局變量稱為外部變量,它是在函數(shù)外部定義的變量。它不屬于哪一個(gè)函數(shù),它屬于一個(gè)源程序文件。其作用域是整個(gè)源程序。在函數(shù)中使用全局變量,一般
    的頭像 發(fā)表于 10-15 10:48 ?5717次閱讀

    詳解LABVIEW中的局部變量全局變量

    本文檔的主要內(nèi)容詳細(xì)介紹的是LABVIEW初級(jí)教程之局部變量全局變量的詳細(xì)資料說明。
    發(fā)表于 03-29 15:00 ?26次下載

    全局變量被未知原因改變的解決方法

    在開發(fā)的過程中總會(huì)碰到一些奇怪的問題,仿真的時(shí)候一看,發(fā)現(xiàn)是某個(gè)全局變量被莫名其妙改變了,導(dǎo)致整個(gè)函數(shù)判斷都出了問題。全局變量可能會(huì)被改變的原因有以下幾點(diǎn):1.自己改的(廢話~):好好查看這個(gè)
    發(fā)表于 12-20 18:47 ?28次下載
    <b class='flag-5'>全局變量</b>被未知原因改變的解決方法

    用個(gè)簡(jiǎn)單demo實(shí)現(xiàn)對(duì)全局變量的管理

    在項(xiàng)目中基本都會(huì)遇到全局變量,隨便放很容易忘記變量的使用,不方便后續(xù)的閱讀,就需要對(duì)全局變量進(jìn)行統(tǒng)一管理,下面就用個(gè)簡(jiǎn)單demo,實(shí)現(xiàn)對(duì)全局變量
    的頭像 發(fā)表于 11-10 11:01 ?1044次閱讀

    RTOS任務(wù)間通信為什么不用全局變量

    RTOS任務(wù)間通信為什么不用全局變量?原因在于使用全局變量存在諸多弊端。
    發(fā)表于 07-05 09:06 ?887次閱讀

    全局變量太多有哪些弊端?

    隨著全局變量的增多,不同模塊的變量名可能會(huì)產(chǎn)生沖突或混淆,導(dǎo)致代碼難以理解和維護(hù)。同時(shí),全局變量使得代碼中的依賴關(guān)系變得復(fù)雜,難以追蹤和理解。這增加了新開發(fā)人員的學(xué)習(xí)成本,增加了修改
    發(fā)表于 04-24 09:15 ?1002次閱讀
    主站蜘蛛池模板: 国产免费一区二区三区在线 | 狠狠干综合 | 在线观看一二三区 | www.一区二区三区 | 色五月在线视频 | 老色批| 免费视频网站在线观看 | 色多多在线观看播放 | 色婷婷精品综合久久狠狠 | 天天摸日日摸 | 扒开双腿爽爽爽视频www | 久久国产高清视频 | 欧美在线观看视频一区 | 国产老头和美女在线观看 | 午夜h | 夜夜狠| 亚洲欧美在线一区二区 | 在线视频一区二区三区四区 | 天堂影院jav成人天堂免费观看 | 亚洲高清免费 | 免费看又爽又黄禁片视频1000 | 丁香婷婷六月天 | 欧美国产精品主播一区 | 久久国产乱子伦精品免费看 | 亚洲国产一区二区三区在线观看 | 久久亚洲精品国产精品婷婷 | 欧美日韩国产成人高清视频 | 日日噜噜夜夜狠狠va视频 | 午夜影院免费观看视频 | 青草青青产国视频在线 | 88av免费观看| 四虎影院视频在线观看 | 日本在线观看高清不卡免v 日本在线观看永久免费网站 | 国产女同视频 | 天堂在线链接 | 亚洲swag精品自拍一区 | 黄网观看| 五月婷婷免费视频 | 色综合久久天天综合观看 | 一级特黄aa毛片免费观看 | 99久热只有精品视频免费观看17 |