4 回答

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個贊
全局變量的問題在于,由于每個函數(shù)都可以訪問這些函數(shù),因此越來越難以確定哪些函數(shù)實(shí)際讀取和寫入這些變量。
要了解應(yīng)用程序的工作原理,您幾乎必須考慮修改全局狀態(tài)的每個函數(shù)。這可以做到,但隨著應(yīng)用程序的增長,它將變得越來越難以實(shí)際上不可能(或者至少完全浪費(fèi)時間)。
如果不依賴全局變量,則可以根據(jù)需要在不同函數(shù)之間傳遞狀態(tài)。這樣你就可以更好地理解每個函數(shù)的作用,因?yàn)槟悴恍枰紤]全局狀態(tài)。

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個贊
重要的是要記住總體目標(biāo):清晰度
“沒有全局變量”規(guī)則是存在的,因?yàn)榇蠖鄶?shù)時候,全局變量使得代碼的含義不那么清晰。
但是,像許多規(guī)則一樣,人們會記住規(guī)則,而不是規(guī)則的目的。
我已經(jīng)看到程序似乎通過傳遞大量參數(shù)來簡化代碼的大小,以避免全局變量的惡。最后,使用全局變量可以使程序更清晰。通過無意識地堅(jiān)持規(guī)則的話,原來的程序員已經(jīng)失去了規(guī)則的意圖。
所以,是的,全局變量通常很糟糕。但是如果你覺得最終,程序員的意圖通過使用全局變量變得更加清晰,那就繼續(xù)吧。但是,請記住,當(dāng)您強(qiáng)迫某人訪問第二段代碼(全局變量)以了解第一部分的工作原理時,會自動產(chǎn)生清晰度。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個贊
我的教授曾經(jīng)說過這樣的話:如果正確使用它們,使用全局變量是可以的。我認(rèn)為我沒有擅長正確使用它們,所以我很少使用它們。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個贊
只有在沒有其他選擇時才應(yīng)使用全局變量。是的,那包括單身人士。90%的時候,全局變量被引入以節(jié)省傳遞參數(shù)的成本。然后發(fā)生多線程/單元測試/維護(hù)編碼,你就遇到了問題。
所以是的,在90%的情況下,全局變量都很糟糕。您在大學(xué)期間不太可能看到例外情況。我能想到的一個例外是處理固有的全局對象,例如中斷表。像DB連接這樣的東西似乎是全球性的,但事實(shí)并非如此。
- 4 回答
- 0 關(guān)注
- 567 瀏覽
添加回答
舉報(bào)