最近在看一些iOS的教学视频。然后听到了一句话挺有感触——"什么都会一点,什么都感觉不会"。
从事iOS开发到现在也有4年了,从一开始的懵懂无知,到现在能独当一面,从面子上看是有些进步。但自己知根知底,原地踏步很久了。工作中需要用到的都是少量的基础知识,真正底层的,我根本不会,也未曾触碰。
我理解的开发技能等级分为四层:
1.用轮子(第一层):
这一层是以”点方式“来做APP,根据主要的需求要点来寻找对应匹配的第三方库,拼凑加入项目中以实现主要需求。
但一方面无法完全贴合所有需求,对于需求的精细化要求也常常难以达到。另一方面,对所使用的库中存在的问题和缺陷无法有效把控。
2.改轮子(第二层):
这一层以”线方式“来实现需求,项目中会使用几个核心库。并对于核心库能够做一定程度的个性化定制。开发者能对核心库代码进行一定程度的理解,并能够进行添加、修改,注入自己想要的细节。此时APP能够贴合大部分需求,在需求实现和UI方面能够令人满意。
但这一层仍然不涉及核心,第三方代码库的核心思想、架构方法、底层实现逻辑、数据内部通讯方式等等,常常是一知半解。这一层的开发者可以理出第三方库中的一条或多条线,但对于整个库的认识往往是不足的。
3.造轮子(第三层):
前面讲点,线,这一层即是”面的方式“。这一层的开发者能够逐渐实现搭建自己的库,以自己的认知和想法来真正实现需求。APP在这一方面缺少一个功能块,那么能根据详细的需求,完整的实现它,完整的补充这个缺口面。
这一层首先需要大量的知识积累,你需要了解底层类的作用,了解架构模式等等
4.拼车子(第四层):
最后一层,”三维方式“,这一层更多是从高层面考虑整个APP的架构。对内需要考虑:库的复用性稳定性、库与库之间的交叉和冲突、整个项目架构稳定性优化等等。对外考虑:前后端通讯、数据库支撑、项目迭代发展方向等种种。
以我而论,大概处于第二层,摸到第三层大门的情况。但迟迟不能真正打开这扇门,原因最大的当然还是自我懈怠。但从技术方面来思考,我的知识太过于“碎片化”。各个方向的开发我都弄得像,但要深究,做精了,我却又做不到。横向发展足够,纵向的发展严重缺乏,我没有一样学的精的。
这几年一直兜兜转转,也有迷惘也有烦躁,想要突破。却总是在门边徘徊,不得而入。看着人家都在往前,自己心里也是十分着急的。但所幸最近又有所感悟,暂且写下,仅供参考。
我觉得达到第三层的要点,不再是零碎的知识积累。而是要去了解底层,了解设计模式,去找一个方向钻研。
1.基类、底层库
我们日常其实很少会用到基类来实现功能,iOS有着大量的封装类。但正是基类,提供更为原始、更为详尽的调用方式。理解基类和底层库,有助于了解iOS系统的数据流转和封装方法。
2.设计模式的了解
各种设计模式各有妙用,而自己建库,考虑库的稳定和可扩展性也必须要用到设计模式。所以无论在写代码、或是看代码时,要注意各中设计模式的使用。这里是否可以用这种设计模式?他在这用了设计模式有什么好处?
3.方向的选择
在造轮子的初期,我们需要确定一个较为详细的方向。比如你决定封装一个基于CoreData的库,那么你就不用了解任何关于UI方面的信息。你就一门心思,实现封装数据库这个目标。任何其他的知识再感兴趣,再有吸引力,暂时放下,专攻数据库这一块的知识。非得把这数据库弄明白了、封装好了、迭代成了、优化完了、能用了,才算成。你一定得有一两个库完完整整的封装经验,才能触类旁通能去类比着封装其他东西。否则,你依然是在第二层打转。
此上,算是我自己的一个自我总结,希望自己记录的这几点能帮助我在接下来一段时间内突破瓶颈吧。