遺留程式碼一直是軟體開發中的挑戰之一,但回想起來,它也是一種成就。我們的iOS團隊在面對這些遺留程式碼時,發現了一些維護有效性的技巧,同時獲得了許多寶貴的經驗。
目錄
處理遺留程式碼的背景
許多人可能會想,“為什麼不乾脆重寫這些過時的程式碼?”其實,這些遺留程式碼常常是系統穩定運行的基礎,因此我們選擇保留並改善它們而不是全部重寫。
時間不足時的應對方案
當開發時間有限,我們通常會使用Sprout方法——在不影響現有代碼的情況下,增添新的功能模塊。這讓我們能持續優化介面,無需頻繁修改基礎代碼。
理解不足時的解決方法
在處理某些我們不太理解的現有功能時,我們采用圖表和逐項分析方式,深入研究以獲得更清晰的結構和未來的改進方向。
應對無結構的代碼
針對那些缺乏結構的程式碼部分,我們推行模組化,以激勵團隊成員進行改善,從而自然而然地提升整體架構的整潔度。
處理龐大的類
當我們面對龐大且混亂的類時,我們會識別其不同的功能責任,逐步將其獨立出來,這樣使系統更容易維護。
確保代碼不被破壞的方法
最終,為防止在編輯過程中損壞代碼,我們會依賴編譯器和保留簽名的方法,確保每一次修改都是可控且可測的。
三個實際故事
- 我們曾在一個半完成的專案裡,將不支持暗模式的代碼改為與系統同步,這解決了我們的許多UI問題。
- 在一個未精雕的專案結構中,我們成功提取了一個巨大的設定類,將它模組化後,經過重構,幫助新功能快速迭代。
- 為了替換一個遺留的第三方庫,我們新建了一套方法,使用編譯器的高效性,快刀斬亂麻般地完成切換,無需逐一測試。