重构的目的
相同的代码不要出现两次
相同功能的代码可以及时抽取,以备日后复用,不要
重复创建轮子
重构的原则
明确
每一步的目标
小步走
测试(每一个改动都有可能出现错误)
抽取代码的步骤
新建方法
复制代码
根据代码调整参数和返回值
调整调用位置代码
测试
抽取类的步骤
示意图
抽取主方法
新建类
抽取主方法
在
.h
中定义方法接口,明确该方法是否适合被外部调用在
.m
中增加方法实现将主方法复制到新方法中
复制相关的
子
方法复制相关属性
检查代码的
有效性
调整内部变量,让
NSURL
由调用方传递,保证代码的灵活性复制代理方法,
注释更新
UI
部分的代码使用
#warning TODO
提醒自己此处有未完成的工作这样做可以不影响重构的节奏
调整视图控制器
测试
重构方法执行调整视图控制器代码,删除被移走代码
再次测试,确保调整没有失误!
确认接口
确认重构的接口
需要
进度
回调需要
完成&错误
回调定义类方法,传递回调参数
实现类方法,记录住回调 block
调整调用方法
增加
block
实现测试
增加已经下载完成的回调
进度回调(100%)
完成回调(路径)
断言
暂停操作
测试,测试,测试!
新问题:如果连续点击,会重复下载,造成错乱!
解决办法:建立一个下载管理器的单例,负责所有的文件下载,以及下载操作的缓存!
示意图
抽取下载管理器
建立单例
接管
下载操作定义接口方法
实现方法
替换方法
测试
操作缓存
暂停实现
最大并发数,
NSOperationQueue+NSOperation
block 小结
block 是
C
语言的数据结构是预先准备好的代码,在需要时执行,类似于匿名函数指针
可以被当作参数传递
在需要时,可以对
block
进行扩展如果当前方法不执行
block
,需要使用属性
记录block
属性需要使用copy
描述符对于必须传递的
block
回调,可以使用断言
来源:oschina
链接:https://my.oschina.net/u/2547481/blog/551470