我即將開始規劃我們的代碼庫的一個主要重構,我想獲得一些意見和一些問題的答案(我已經看到了很多類似主題的討論,如https://stackoverflow.com/questions/108141/how-do-i-work-effectively-with-very-messy-legacy-code,Strategy for large scale refactoring,但我有一些(底部):如何去做一個大型的重構項目?
我們開發了一個複雜的應用程序,大約有25個開發人員在開發代碼庫,至今投入產品的總人數大約是150. 當前代碼庫是一個單獨的項目,我正在着手的項目的高層次目標是將代碼模塊化到各種基礎設施和應用組件中 目前各種邏輯組件之間沒有很好的分離,所以很明顯, dularization的努力將需要包括一些API的定義和認真解開來實現分離。 質量標準低 - 幾乎沒有測試,並且確實沒有作爲構建過程的一部分運行的測試。
另一個非常重要的一點是,該項目需要與正在向客戶交付的有效產品開發和版本並行進行。項目
目標:
- 允許組件的重用在不同的項目,從基礎設施
- 單獨的應用程序,並允許他們發展獨立
- 提高可測試性(通過創建API)的
- 簡化開發人員'dev env(檢出並編譯的代碼較少)
我雖然ts and questions:
- 您對項目目標有什麼想法?你會改變什麼?
- 你有這些項目的經驗嗎?有什麼建議?
- 我非常擔心缺少測試 - 因此我無法控制重構過程,因爲我知道重構過程不會破壞任何東西。這是一個捕捉22,因爲這個項目的目標之一是使我們的代碼更可測試...
- 我受到邁克爾羽毛'Working Effectively With Legacy Code非常影響。據說,自下而上的方法是解決我的問題的方法 - 不要先跳到代碼庫並嘗試修復它,而是從幾個月的新代碼周圍添加單元測試開始,然後看看代碼(和團隊)變得更好,在一定程度上抽象將會出現,API將會表面化等等,而本質上 - 模塊化將自行開始發生。 有沒有人有這樣的方向經驗? 正如在這個話題的許多其他問題中看到的 - 這裏的主要問題是管理層的不信任。 「如何按班級測試課程(並花費大量時間這樣做)將我們帶入一個穩定的系統?這是一個很好的理論,它在現實生活中不起作用。」有關銷售這個的任何提示?