做者簡介 新茗 螞蟻金服·數據體驗技術團隊前端
以前也介紹過咱們團隊的前端項目從零開始經歷8個月迭代業務代碼10萬行(僅爲產品長期規劃需求的20%),至今仍然在不斷迭代的過程。git
團隊成員除了設計好的架構來管理這種複雜度極高的前端應用,還開始補充設計模式以及重構方面的知識,目的是爲了讓項目代碼在不斷迭代的過程當中優化項目代碼,保持代碼的新鮮度,魯棒性,可維護性… 讓後續加入的團隊新人也能夠快速加入咱們的產品開發中程序員
PS: 無論對於何種語言,重構都是軟件開發過程當中不可或缺的一部分。若是已經瞭解重構的基礎,能夠直接跳往至文章後面的重構案例
部分。github
「若是尿布臭了,就換掉它」。設計模式
咱們回過頭來看一下"什麼是重構"架構
不改變軟件可觀察行爲的前提下,改善其內部結構函數
以提升理解性和下降修改爲本工具
摘自《重構 - 改善既有代碼的設計》(下面簡稱《重構》)
複製代碼
咱們須要明確的一點是: 重構不是一件應該特意撥出一段時間來作的事情。重構不是目的,可是重構能夠幫助你把事情作好。學習
事不過三,三則重構開發工具
說了這麼多廢話,其實你們都明白沒有與實踐結合的理論都是空虛的。
可是 重構
和 設計模式
同樣,也是須要一個"學習——領悟——突破"的過程。第一步的學習讓你瞭解基本的重構手法,第二步的實踐勾起你對重構手法的回憶以及重溫應用,第三步的應用以及實踐經驗激發你的思考,領悟以及總結,以至於靈活運用。
但凡是人,老是在不斷學習,不斷溫習,以達到具體場景具體應用,靈活自如。 重構是一個很大的話題,《重構》做者本人也是經歷了N多的項目,以及多年的經驗才總結出來的重構技巧。
《重構》一書做者總結的重構手法實在是太多了,只能經過圖片來展現一下全部做者總結的重構列表。
具體的補充,你們能夠看看《重構》一書。
做者推薦的一種作法:
隨機挑選一個目標
先給本身選擇一個目標(譬如「去掉一堆沒必要要的子類」),而後朝着目標前進,每一步走得小而堅決沒把握就停下來
當你沒法證實本身所作的一切可以保證原有程序的邏輯和語義時,請你停下來思考:既有的重構是改善了仍是毫無成果須要撤銷。保證每次重構後的測試都能正常跑通
做爲開發者, 應當把重構做爲開發的一部分,一邊開發一邊重構。在快速堆疊代碼,實現基本需求功能的基礎上,寫好測試用例,保證功能不變,逐步重構。
這也是咱們團隊要求每一個人都掌握重構這門必備技能的緣由。優秀的程序員應當儘可能避免低質量的代碼。
程序結果:(請保證重構後結果不變~)
這裏爲了更好的展現重構的手法,使用TS,根據上面的討論進行了部分重構,重構的方式實際上是根據業務將來的擴展方向而定,並無最優解,有興趣的能夠加入咱們,拋出你的看法~
基本技巧
重構實際上是一件須要長期投入,而且投入產出比很高的事情。對重構感興趣的同窗能夠關注專欄或者發送簡歷至'tao.qit####alibaba-inc.com'.replace('####', '@'),歡迎有志之士加入~