重構步驟筆記

重構的目的

  • 相同的代碼不要出現兩次web

  • 相同功能的代碼能夠及時抽取,以備往後複用,不要重複建立輪子緩存

重構的原則

  • 明確每一步的目標數據結構

  • 小步走併發

  • 測試(每個改動都有可能出現錯誤)函數

抽取代碼的步驟

  • 新建方法測試

  • 複製代碼spa

  • 根據代碼調整參數和返回值代理

  • 調整調用位置代碼指針

  • 測試code

抽取類的步驟

  • 示意圖

抽取主方法

  • 新建類

  • 抽取主方法

    • 在 .h 中定義方法接口,明確該方法是否適合被外部調用

    • 在 .m 中增長方法實現

  • 將主方法複製到新方法中

  • 複製相關的方法

  • 複製相關屬性

  • 檢查代碼的有效性

    • 調整內部變量,讓 NSURL 由調用方傳遞,保證代碼的靈活性

  • 複製代理方法,

    • 註釋更新 UI 部分的代碼

    • 使用 #warning TODO 提醒本身此處有未完成的工做

    • 這樣作能夠不影響重構的節奏

  • 調整視圖控制器 測試重構方法執行

  • 調整視圖控制器代碼,刪除被移走代碼

  • 再次測試,確保調整沒有失誤!

確認接口

  • 確認重構的接口

    • 須要進度回調

    • 須要完成&錯誤回調

  • 定義類方法,傳遞迴調參數

  • 實現類方法,記錄住回調 block

  • 調整調用方法

  • 增長 block 實現

  • 測試

  • 增長已經下載完成的回調

    • 進度回調(100%)

    • 完成回調(路徑)

  • 斷言

  • 暫停操做

  • 測試,測試,測試!

新問題:若是連續點擊,會重複下載,形成錯亂!

解決辦法:創建一個下載管理器的單例,負責全部的文件下載,以及下載操做的緩存!

  • 示意圖

抽取下載管理器

  • 創建單例

  • 接管下載操做

    • 定義接口方法

    • 實現方法

    • 替換方法

    • 測試

  • 操做緩存

  • 暫停實現

  • 最大併發數,NSOperationQueue+NSOperation

block 小結

  • block 是 C 語言的數據結構

  • 是預先準備好的代碼,在須要時執行,相似於匿名函數指針

  • 能夠被看成參數傳遞

  • 在須要時,能夠對 block 進行擴展

  • 若是當前方法不執行 block,須要使用 屬性 記錄

  • block 屬性須要使用 copy 描述符

  • 對於必須傳遞的 block 回調,能夠使用 斷言

相關文章
相關標籤/搜索