重构步骤笔记

重构的目的

  • 相同的代码不要出现两次web

  • 相同功能的代码能够及时抽取,以备往后复用,不要重复建立轮子缓存

重构的原则

  • 明确每一步的目标数据结构

  • 小步走并发

  • 测试(每个改动都有可能出现错误)函数

抽取代码的步骤

  • 新建方法测试

  • 复制代码spa

  • 根据代码调整参数和返回值代理

  • 调整调用位置代码指针

  • 测试code

抽取类的步骤

  • 示意图

抽取主方法

  • 新建类

  • 抽取主方法

    • 在 .h 中定义方法接口,明确该方法是否适合被外部调用

    • 在 .m 中增长方法实现

  • 将主方法复制到新方法中

  • 复制相关的方法

  • 复制相关属性

  • 检查代码的有效性

    • 调整内部变量,让 NSURL 由调用方传递,保证代码的灵活性

  • 复制代理方法,

    • 注释更新 UI 部分的代码

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

    • 这样作能够不影响重构的节奏

  • 调整视图控制器 测试重构方法执行

  • 调整视图控制器代码,删除被移走代码

  • 再次测试,确保调整没有失误!

确认接口

  • 确认重构的接口

    • 须要进度回调

    • 须要完成&错误回调

  • 定义类方法,传递回调参数

  • 实现类方法,记录住回调 block

  • 调整调用方法

  • 增长 block 实现

  • 测试

  • 增长已经下载完成的回调

    • 进度回调(100%)

    • 完成回调(路径)

  • 断言

  • 暂停操做

  • 测试,测试,测试!

新问题:若是连续点击,会重复下载,形成错乱!

解决办法:创建一个下载管理器的单例,负责全部的文件下载,以及下载操做的缓存!

  • 示意图

抽取下载管理器

  • 创建单例

  • 接管下载操做

    • 定义接口方法

    • 实现方法

    • 替换方法

    • 测试

  • 操做缓存

  • 暂停实现

  • 最大并发数,NSOperationQueue+NSOperation

block 小结

  • block 是 C 语言的数据结构

  • 是预先准备好的代码,在须要时执行,相似于匿名函数指针

  • 能够被看成参数传递

  • 在须要时,能够对 block 进行扩展

  • 若是当前方法不执行 block,须要使用 属性 记录

  • block 属性须要使用 copy 描述符

  • 对于必须传递的 block 回调,能够使用 断言

相关文章
相关标签/搜索