iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Software Development

如果可以,我想用30天的時間打造一間抵霸閣系列 第 20

[Day20]抵霸閣-未來變數太多,我們能做的就是在這城市找到生存規則

  • 分享至 

  • xImage
  •  

有天我在debug時在監控變數值的變化
當跳到某行時(脫離函式後)發現看不到變數了
想說奇怪怎麼不見了
原來是跳出了區域變數的可視範圍(scope)

全域變數(global variable) vs. 區域變數(local variable)

剛學習程式的時候沒有寫函數的概念
就通通把變數寫在最外層(只使用全域變數)
讓所有的程式碼都可以使用
但當程式越寫越多層時
會發現當變數可能在許多地方都有用到
再來執行程式時發現怎麼全域變數在某處被修改了
要找出所有用到此變數的地方真的是大海撈針阿
增加程式debug和維護的困難(效能也差)

所以應該事先設想好各變數的用途再將其放到對的位置
像是常數就很適合當全域變數(因為沒有被修改的問題)
而若只需要在函式內計算而暫時使用到的變數就可以在function內宣告(區域變數)

要特別注意的是
當在函式內重複宣告了一個和全域變數一樣名稱的"區域變數"
全域變數就會在區域變數的scope內被覆蓋掉了
(有點像是當國王[全域變數]跑到深山內就會被山裡的霸主[區域變數]幹掉
但只要逃出深山就還是能繼續稱王)


上一篇
[Day19]抵霸閣-一定要按照資料庫的正規化設計走嗎?
下一篇
[Day21]抵霸閣-列舉型別的基本介紹
系列文
如果可以,我想用30天的時間打造一間抵霸閣30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言