iOS关于代码复用的一点小技巧
今年4月份的时候,公司项目迭代版本,借着优化入库流程的契机,主要将展示快递公司这一块功能抽出来做了复用处理,并且在其他地方也做了一些可复用代码抽取工作,索性整理了一下代码复用的相关技巧。
1.在开发中,共用同一个界面的情况经常会遇到,正常情况下写界面,一般都会通过接受传递model去刷新界面做数据处理,然而在项目复杂程序上来后,在追求复用的情况下,如果一个界面复用三次,四次,那么继续根据传入的model来做处理,显得不够合理。往往这样的代码阅读起来比较困难,其次业务逻辑区分显得不够清晰,另外容易出现类似空指针,业务代码复查困难的情况。通过枚举值去处理复用界面的场景会更合理。
—回调处理
2.开发中经常会遇见业务比较独立的模块,比如在我司项目中经常会遇到选择快递公司的这一业务场景,如下
遇到这样的复用场景,可考虑将其抽成一个独立的,对外接口尽量简单,业务完全独立的模块。
我先将tableView和其数据加载页,无数据占位页,包装在
@interface LYCompanyChoiceView : UIView
然后,申明一个配置类LYChooseExpressCompanyConfig,持有LYCompanyChoiceView,做一些业务逻辑的处理工作,并且完成自定义pop的实现
LYCompanyChoiceView 的tableView点击事件通过block回调给LYChooseExpressCompanyConfig ,config将回调事件通过代理传递给控制器
屏幕快照 2017-07-03 上午9.09.22.png
控制器中在使用时如下:
LYChooseExpressCompanyConfig 的getter方法中设置代理为某控制器
self.companyConfig.LYEDelegate = self;
最后在需要pop出快递公司的地方去调用show方法即可
[self.companyConfig Show];
代理方法如下
3.关于业务代码的复用,业务代码注重逻辑处理,所以一般业务代码除了一些功能性的例如数据筛选,排序,数据库交互或者业务层面上的统一的页面跳转处理,数据合法性等之外,复用操作起来更复杂,并且复用面临的凤险也比较大,这方面还需要多下心思考虑。