Mutable Data

徵兆與症狀

程式裡面的資料或狀態,出乎意料的被其他程式修改了,甚至非常難以找到怎麼發生的。

出現原因

當資料在較大作用範圍的程式內被反覆操作時,隨著作用範圍越來越大,往往會產生很多風險。

處理方法

  • 使用 Encapsulate Variable 來確保所有更新都通過特定 function 處理,以方便監控。
  • 如果變數會被不同功能更新,可以使用 Split Variable 來隔離。
  • 使用 Slide StatementsExtract Function 來把更新資料的邏輯單純化。
  • 使用 Separate Query from Modifier 來確保呼叫端只在真的需要更新資料的時候才呼叫。
  • 有時候,需要用 Remove Setting Method 來減少意外更改欄位的機會。
  • 若 Mutable data 可以在其他地方計算出來,可以使用 Replace Derived Variable with Query 來取代。
  • 若 Mutable data 作用範圍太大,可以使用 Combine Functions into ClassCombine Functions into Transform 來限制資料可被存取的範圍。
  • 若 Mutable data 使用到某些資料結構,與其直接更改,不如使用 Change Reference to Value 傳遞值。