pretty code

2024年1月13日 星期六

星星之火,可以燎原

程式 Bug 就是如此神奇?

快兩個月前發現 Daily Money 因為資料庫筆數已經突破 20,179 筆,導致明細報表無法在既定的時間內完成而產生 ANR。

當時因為忙於交接,故只用最快的方式找到錯誤的地方做點小 patch,但因為沒有仔細研究,所以留下了一個小 Bug,在切換月份的時候日期就會整個錯亂XD

原來 currentDate 是有意義的,當按 Prev() or Next() 時,currentDate 會變動,currentEndDate 也會隨之變動,故我不能重新計算 currentDate 的值!

當初只改 4 行以為解決了 ANR 問題,沒想到也留下一個月報表及年報表的錯誤,果然星星之火可以燎原,雖然現在只要 2 行就可修復。

簡單做了點驗證,希望兩個月後不要再發生其他問題XD

目前資料筆數來到 20,450 筆。


2024/01/15 更新

稍微再多看一點 code,釐清了幾個地方。

totalMode = 1 表示是資產負債表。

currentDate 會在按下 Prev() or Next() or Today() 時改變,接著呼叫 reloadData(),在這裡會重新計算 currentStartDate 和 currentEndDate,也是在這裡面依 totalMode 決定 currentStartDate 是不是 null。

故嚴格來說,兩個月前為了解決 ANR,應該把 patch 改在這裡,比較符合原開發者的意思。

沒有留言: