Strangler重寫模式
來自Martin Fowler推薦的模式,這是描述重寫一個重要系統的方法,Strangler是一種漸進的重寫模式,而不是一刀切全部重寫釋出新版本:
當Cindy和我去澳大利亞時,我們在昆士蘭海岸的雨林中度過了一段時間。這個地區的自然奇觀之一是巨大的Strangler藤蔓。它們生長在無花果樹的上部分樹枝,會逐漸沿著樹木向下移動,直到它們在土壤中生根,多年來,他們成長為奇妙而美麗的形狀,同時扼殺和殺死它們寄生的主人樹。
我的職業生涯大部分都涉及系統的重寫。你會認為這樣的事情很容易 ,然而,它們總是比它們表面上複雜得多,而且充滿了風險,交付日期迫在眉睫,壓力仍然存在。雖然新功能(總有新功能)很受歡迎,但舊功能必須保留。甚至經常需要將舊錯誤新增到重寫的系統中。
另一種方法是逐步在舊的邊緣建立一個新系統,讓它在幾年內緩慢增長,直到舊系統被勒死(Strangler的意思是扼殺勒死)。
這樣做聽起來很難,但我越來越認為這是運作良好的基本策略。
我的同事克里斯史蒂文森 最近參與了一個專案,取得了很大的成功。他們在XP 2004上發表了關於此的第一篇論文,我希望能有更多描述這個專案的更多方面。它們尚未處於舊應用程式被勒死的程度 - 但它們為業務提供了有價值的功能,使團隊更有信心。即使他們現在停止,他們也有巨大的投資回報 - 這比許多切換重寫都要多。
考慮Strangler模式而不是一刀切的重寫的最重要原因是降低了風險。Strangler可以穩定地提供價值,頻繁的釋出使您可以更仔細地監控其進度。許多人仍然不採用Strangler,因為他們認為會花費更多 - 我不相信這一點。由於您可以使用較短的釋出週期,因此可以避免許多不必要的功能,這些功能可以減少重寫次數。
這裡有另一個重要的想法 - 在設計新應用程式時,您應該設計它以便在將來更容易被勒死。讓我們面對現實,我們所做的就是今天編寫明天的遺留軟體。透過讓將來很容易被勒死,你可以讓今天的工作更加優雅。
相關文章
- Shopify如何使用Strangler Fig模式重構遺留程式碼中上帝式大物件?- Adrianna Chang模式物件
- TypeScript重寫設計模式庫的搭建TypeScript設計模式
- 使用策略模式和簡單工廠模式重寫支付模組模式
- 重寫equals方法以及重寫tostring方法
- 使用策略模式和簡單工廠模式重寫支付模組(二)-優化$request模式優化
- 重寫toString
- hashcode重寫
- 重寫ThreadPoolTaskExecutorthread
- 方法重寫
- 使用策略模式和簡單工廠模式重寫支付模組(二)-最佳化$request模式
- 為什麼重寫equals必須重寫hashCode
- C++重寫C++
- 方法的重寫
- 方法重寫(Override)IDE
- java 中為什麼重寫 equals 後需要重寫 hashCodeJava
- 重學設計模式-單例模式設計模式單例
- 重寫返回鍵(Fragment)Fragment
- java -繼承 -重寫Java繼承
- TreeSet重寫Comparator排序排序
- java 方法重寫概念Java
- 為什麼重寫 equals() 方法,一定要重寫 hashCode() 呢?| HashMapHashMap
- 重識設計模式-建造者模式(Builder Pattern)設計模式UI
- 重構 - 觀察者模式模式
- Nginx實現URL重寫Nginx
- 如何禁止JavaScript物件重寫?JavaScript物件
- egg重寫部落格介面
- override(重寫) and overload(過載)IDE
- 重寫遵循的原則
- HDFS讀寫流程(重點)
- java~重寫hashcode和equalsJava
- java 重寫知識點Java
- 如何修改docker容器的重啟策略(重啟模式)?Docker模式
- iOS模式分析 使用介面卡模式重構TableViewiOS模式View
- 重溫23種設計模式(11):原型模式設計模式原型
- 重學 Java 設計模式:實戰建造者模式Java設計模式
- 重學 Java 設計模式:實戰原型模式Java設計模式原型
- 【重溫設計模式】之003工廠方法模式設計模式
- iOS MVP模式重構實踐iOSMVP模式