了解流程
首先,我們需要了解以前的系統是如何工作的。我們需要知道從編譯、測試和部署直到收到用戶請求的整個過程是如何工作的。
因為這是壹個核心服務,而且我剛來這裏壹年,我真的不知道它是怎麽工作的,尤其是這些年來整個系統增加了很多額外的功能和補丁,光看代碼很難理解。因此,我們需要了解流程和規則,然後基於這些流程和規則構建新的流程和規則。
設計和討論
之所以要重構這個服務,是因為當我們要添加新的功能時,之前系統的代碼架構無法很好的擴展。以後開發新功能會很痛苦,因為我們要重構很多東西。
所以我們真正需要的是修復架構。設計壹個新的架構真的很難。我們需要問自己很多問題,比如,“會發生什麽?”“為什麽?”“為什麽不呢?”我們希望新的架構能夠解決“未來”的問題,並提供向後兼容性。為此,我們討論了大約壹個月,討論了每個主要功能的技術棧和流程。
了解基礎知識
當把過程和設計翻譯成代碼時,我意識到我們必須對基礎有壹個真正的理解。壹開始我並沒有真正理解高階函數的工作原理。看代碼的時候感覺很迷茫。為什麽函數總是接收壹個函數作為參數,然後返回壹個函數?但感謝谷歌,我現在終於明白了。
永遠不要忽視測試。
在重新構建這個服務時,我們在將它發布到生產環境之前至少進行了三次測試:單元測試、集成測試和負載測試。
在所有這些類型的測試中,單元測試都是非常小的測試。IT培訓/發現有些人似乎低估了單元測試的重要性,因為它只是壹個單元和壹個小功能。然而,在重新構建這個新服務時,我意識到了單元測試的重要性。