普通文組 2.5

閱讀筆記:The Art of Unit Testing Chapter 12 Working with legacy code

重點

工程師可以根據單元的邏輯複雜度、依賴數量、核心價值來挑選值得投資時間重構的目標。

如何安全地重構

在重構前先幫既有的功能寫好整合測試(integration test),並且在確認整合測試全數綠燈後,才開始重構、並補寫單元測試。

重構完成後,再跑一次整合測試,確保功能都還有在正常運作。

從哪裡開始重構

如何評估優先順序

可以根據以下三種要素來評估哪些單元值得我們花時間重構它:

  1. 邏輯複雜度(logical complexity, cyclomatic complexity
  2. (被)依賴數量
  3. 整體優先度:該單元在整個服務中是否具有特殊地位(例:是否為核心商業邏輯)

推薦從「邏輯複雜度高」或「整體優先度高」的單元開始重構計畫。

策略

  • 由簡入難:挑選優先度高、但複雜度低的單元開始重構,推薦給還不熟悉重構、撰寫單元測試的團隊——先累積經驗,之後能比較順利地處理複雜的單元
  • 由難入簡:已經是重構、測試老司機了嗎?推薦你直接從最複雜、依賴最多的單元下手,理由是——當你在拆解這顆未爆彈時,你多半會被迫順手處理很多程式碼。在經歷大風大浪後,剩下的目標會為你帶來極為舒適的開發體驗 😇

參考文件