聯系我們

博客

工程師博客

注意全局變量

軟件初學者容易中招的陷阱

這是在我初出茅廬,軟件開發經驗尚淺的時候,負責某個産品固件開發時經曆的“搞砸”的失敗教訓。

該産品的規格中通過外部的輸入輸出切換進行遠程控制的規定,配置該功能需要編寫對輸入輸出進行定期監控并根據狀态進行處理的程序。

處理本身比較簡單,是将作為判斷标準的輸入輸出狀态直接保存在“全局變量”中,制作進行處理的函數。而且是在一定程度上可以預測的條件下進行運行驗證,(自己認為)沒有問題,于是就發布了。由于輸入輸出狀态隻有ON/OFF兩種模式,因此,當時的驗證是隻通過上述模式的組合完成的。

在發布的幾年之後,收到了無法正确處理外部輸入輸出狀态的咨詢,于是趕緊進行調查。

實際的使用條件是外部輸入輸出狀态的切換周期非常快,而在開發時沒有在這種苛刻的條件下進行驗證,因此,找借口都無從找起。

進一步調查後發現,原因很簡單,輸入輸出狀态保存在全局變量中,所以想當然地認為定義後無論從哪裡調用,數值都不會發生變化,沒有考慮到輸入輸出狀态通過其他函數内的處理而被置換的情況。因此,最終未能正确處理。

這個時候我才深切地認識到,無論在什麼情況下,都不應使用全局變量進行處理,而是要充分理解設想功能的算法,并用自己的方式掌握數據流以及加工的整體概念,這一點是非常重要的。作為重要的基礎知識,應該掌握全局變量會被哪裡訪問,會在什麼時間被更新。

此外,在驗證方法方面,我也深刻地認識到,除了ON/OFF這種單純的模式之外,更重要的是将多個條件組合起來考慮(制定驗證标準)。不過,将所有的組合都考慮進去也不現實…。

隻要清楚這一點,就不會發生問題,但是,在第一次開發等的情況下,往往會出現哪怕是簡單的問題也想不到的情況。遇到難題的時候可以去查網站,查書本,當然最快的方法是請教身邊的同事。也許你不知道,其實很多人都會告訴你答案,也有很多人會給你提示以啟發你的靈感。

TEXT BY
渡邊 聰
解決方案開發部 解決方案推進課 課長代理

[主要産品開發業績]
直流穩定電源PAT-T系列,電子負載裝置PLZ-4W系列
系統模拟試驗用軟件(電網模拟器)
航空電子設備試驗用軟件
程序編寫,控制軟件 Wavy系列

聯系我們