在开发过程中,我们应该尽量保证代码的整洁性,方法尽量的简短,一个方法只做一件事情,而类也不应该过于复杂。很多时候,我们会一直往一个类里面添加代码,最终,这个类可能成为一个“庞然大物”。在iOS开发中,我们可以使用category将类进行拆分。
如下图所示,我要实现一个做题功能,上方矩形框是一个工具栏,为答题提供一些辅助功能,下方矩形框用来显示题目和作答。
我为这个类命名为PracticeVC,自己画了了类图(UML都是我自己瞎琢磨,也不知道这样画对不对)。
它包含一个AnswerTopView和一个UIScrollView,UIScrollView又包含一堆东西。
进入PracticeVC,以后,我需要:
1.请求题目数据,解析
2.设置AnswerTopView的点击事件
3.设置UIScrollView(显示题目、切换题目、设置答题卡)
4.提交用户作答数据。
虽然,我已经封装了两个类AnswerTopView和DisplayArea,在PracticeVC中只需要实现代理方法,指明点击工具栏上的按钮要做什么,初始化DisplayArea,AnswerCardView。但我仍然感觉非常的臃肿,这个类很长,好几百行。我有强迫症,我要拆分这个类。
iOS中category使用的比较多,我们常常会实现各种XX+Helper,非常好用。category可以为类添加方法(可能会覆盖类原有方法)和属性(有些书上认为只有在匿名category中添加属性才是合适的,其他的category不应该添加属性)。我们可以借助这一特性来拆分类,将其拆分到不同的category中,查看系统的类的头文件,基本都使用大量的category,相信原因中肯定有一条是避免类太复杂。
为此,我将请求题目和提交用户作答数据拆成一个类目PracticeVC+PVCServer,将上面的AnswerTopView的设置管理拆成另外一个类目PracticeVC+PVCTopView。我将需要用到的属性,都在PracticeVC.h中声明,类category中只有方法。这样拆分以后,PracticeVC有180行,PVCTopView有80行,PVCServer有100行。如果功能发生改变,我们只需要修改相应功能所在的文件就可以了。这样拆分以后,对于继承,也不会有任何影响,在PracticeVC中import这两个category,子类也就有了这些方法。
版权声明:欢迎评论和转载,但请保留出处!
原文地址:http://blog.csdn.net/u011367651/article/details/47322761