- 編寫高質量代碼:改善C程序代碼的125個建議
- 馬偉 著
- 716字
- 2019-01-01 01:33:15
建議10:盡量少使用全局變量
全局變量的作用前面已經介紹了許多,其主要作用就是增加函數間數據聯系的渠道。由于同一源文件或多個源文件中的所有函數都能夠引用全局變量的值,因此,如果在一個函數中改變全局變量的值,就會影響到其他的函數,相當于各個函數間有直接的傳遞通道。由于函數的調用只能帶回一個返回值,因此有時可以利用全局變量來增加函數聯系的渠道,從而使函數可以得到一個以上的返回值。
盡管如此,過多使用全局變量也會給我們帶來許多的麻煩,主要表現為:
□ 由于全局變量是靜態存儲方式,因此它在程序的全部執行過程中都會占用存儲單元,而不是僅在需要時才開辟存儲單元。
□ 它使函數的通用性降低,因為函數在執行時依賴其所在的外部變量。在程序設計時,我們要求模塊的功能單一,各模塊之間的相互影響盡量少,而用全局變量很顯然是不符合這個原則的。通常,我們都會要求把C程序中的函數做成一個封閉體,從而通過“實參-形參”的渠道來實現與外界的聯系,這樣的程序移植性好,可讀性強。
□ 使用的全局變量過多,會降低程序的清晰性,我們往往難以清楚地判斷出每個瞬時各個外部變量的值。由于在各個函數執行時都可能改變外部變量的值,這就很容易導致程序出錯。
□ 如果在同一個源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內,外部變量會被“屏蔽”,即它將不起任何作用。
基于上面的原因,建議盡量減少全局變量的使用,同時建議你:
□ 如果全局變量僅需要在單個源文件中訪問,則可以將這個變量修改為靜態全局變量,以降低模塊間的耦合度。
□ 若全局變量僅由單個函數訪問,則可以將這個變量改為該函數的靜態局部變量,以降低模塊間的耦合度。
□ 使用全局變量、靜態全局變量與靜態局部變量的函數時,需要考慮重入問題。
推薦閱讀
- Python快樂編程:人工智能深度學習基礎
- 案例式C語言程序設計
- Microsoft Application Virtualization Cookbook
- 跟小海龜學Python
- Rust Cookbook
- Oracle Exadata專家手冊
- 深入理解Elasticsearch(原書第3版)
- C語言程序設計上機指導與習題解答(第2版)
- 小程序,巧應用:微信小程序開發實戰(第2版)
- Visual C#.NET Web應用程序設計
- Citrix XenServer企業運維實戰
- .NET Standard 2.0 Cookbook
- Python語言科研繪圖與學術圖表繪制從入門到精通
- 產品架構評估原理與方法
- Android 5從入門到精通