2014/05/27

程式錯誤經驗談:產生列表項目時,每一筆都向 Database 取時間

今天犯了個錯誤,在 ListView 填入資料時,因為要檢查資料日期是否逾時,必須以 Database 的時間為基準,所以在產生每一個 ListVieweItem 的時候,都向 Database 取時間,使得畫面顯示列表的時間拖得非常久。

最初,程式裡面使用 DateTime.Now 為基準,但客戶要求不可以使用 client 電腦的時間,以免 user 自己改到電腦時間。因此,我寫了一個全域的 ServerDate 方法向 Database 取得時間,然後把程式裡面所有 DateTime.Now 取代成 ServerDate 方法。當然包含了產生列表這一段,小小的災難就這樣發生了。

主管安慰我,說一定是後來因為客戶要求,臨時改掉原來的程式,才會令人疏忽,發生這樣的問題。的確,這是個無心之過。但! 身為一個程式設計師,應該對使用 Database 的資源充滿警覺性。

後來,小小改了一下,程式效能變得 40 幾倍快。哀~ 要小心。