@kezhen
2015-12-29T07:52:33.000000Z
字数 1182
阅读 1459
重构
IWANHttpManager.m
:网络请求的URL尽量按业务放置在不同的Manager进行管理。Network/json
:在该目录路径下,再根据不同的业务建立对应的文件夹路径,存放各个业务的JsonModel;或者参照Dong网络库,置于各个不同业务Manger的子目录路径下。IWANDataManagerViewModel.m、IWANConnectToWechatViewController.m
:把网络请求抽出来,参照Dong的项目做法,由不同业务的Manger管理,使用网络库的回调方法进行网络请求,使得代码功能划分相对更清晰,利于维护。IWANHomePageViewController.m、IWANHomePageViewController.m
:抽离UI和VM。Main/Home(主界面)
:抽离写在ViewDidLoad等的UI实现Main/Entrance/Root(根视图)
:抽取不合理的方法和混乱的UI实现代码。IWANBandManagerPresenter.m、IWANLeftMenuTableViewController.m
:自定义Cell的UI赋值更新不应该出现在此文件,这个文件不关心Cell内部UI的内容。IWANAutoRangeViewController.m、IWANBandManagerViewController.m...
:视图控制器赋值控制更新UI,不需要负责UI的具体实现。几乎所有二级的视图控制器
:每个View相关的控制器在左上角都要有个返回的按钮,有些用代码实现,有些使用 IBAction 实现,都为了一个功能:返回上一层级。IWANInfoStored.m
:每次都要自定义一个key来存储对象,key又要进行统一宏定义,十分不方便,统一改用 GVUserDefaults。IWANNewDeviceViewController.m
:将 Line:298-430关于 EAIntroPage 的实现放到单独的View文件夹中,在 IWANNewDeviceViewController.m 新建一个调用方法创建EAIntroPage直接返回一个数组(introUse1,…,introUse5),不要再全部写在 viewDidLoad 里面。MusicItem.m、IWANAlarm.m等模型类
:通过 NSCoding 存储数据需要遵守其协议,并写一大堆encodeWithCoder ,decodeWithCoder的方法,十分繁琐。 引入 MJExtension 框架,加入一句 MJExtensionCodingImplementation 即可。