[隨筆] 你的程式碼活著嗎?

什麼是 legacy code? 沒有自動測試保護的就是 legacy code 。

-Michael Feathers, 《Working Effectively with Legacy Code

講直白一點,legacy code 就是沒爹沒娘沒靠山,被人射後不理的產物。

誰都可能欺負它、弄壞它,簡直就是一直像死了般卻仍在線上活著的產品程式碼。

...繼續閱讀 »

[Unit Test Tricks] Static Setter Injection

在實務開發中,常使用簡單工廠(Simple Factory)以及策略模式(Strategy Pattern)來封裝實作細節,使得 context 流程抽象穩定,並達到開放封閉原則(Open/Close Principle, OCP)中所蘊含可抽換實作的彈性。

在 context 流程中,透過簡單工廠依據條件來取得 interface 的 instance 固然美好,卻往往因為與簡單工廠的 static function 直接耦合,而導致這段 context 流程無法進行 isolated unit test。

這篇文章的小技巧,就是要解決 developer 因可測試性而廢棄簡單工廠不用,反而大費周章改用抽象工廠(Abstract Factory Pattern)的問題。

...繼續閱讀 »