說到Cache
大部分看到的實作
都是利用裝飾者模式來做快取
用久了也覺得沒什麼稀奇
不過日前卻碰到一次特殊的問題

我們在原本快取的class上
新增一個欄位
推到正式環境

原本想說應該沒事
結果一推上去就狂噴警告
null reference check

發生的當下緊急退版
慢慢找問題原因
後來才發現是因為快取的Key值
在我們新增物件欄位後並沒有更新

而這個新增的欄位
好死不死又是class
而不是基礎型別
所以從快取拿出來後
就直接是null

最後的解法是
在建構式當中
先給欄位預設值
上版之後再手動清掉快取
才把問題解決

快取雖然簡單有效
但是實際上遇到的問題還不少
遇到有快取的物件
寫code時還是得多想一下