关于日益泛滥的Android第三方框架

来源:互联网 发布:在淘宝上买东西有技巧 编辑:程序博客网 时间:2024/05/18 03:57

转载请注明出处:
http://blog.csdn.net/ahence/article/details/52929436

前言

目前Android开发依然很火,如果你关注GitHub,可能会发现越来越多的第三方库与框架(一些简单的库可能称不上框架,为了行文方便,后文统一称之为框架)如雨后春笋般出现。这在一定程度上反映了Android开发的繁荣,但任何事情都有其另一面,第三方框架在方便了App开发的同时,也带来了一些不利影响。

最近我们在招聘2~3年工作经验的Android工程师,应聘者简历上的项目介绍无一例外都用到了大量第三方框架,更有甚者几乎整个App都是靠框架堆起来的。但是当问面试者某个框架的优缺点时,却很少有人能回答出来,即使有的面试者知道所用框架的优缺点,但却丝毫没看过框架的源码,更别提对源码做修改或扩展了。仅仅是拿来主义,简单地拿来实现自己的功能,最多做个简单的封装,有的甚至封装都是第三方库代劳。

其实不只是中高级开发者,很多初学者,一上来就各种框架地用,压根儿不去想内部是如何实现的。比如使用OkHttp获取网络数据却不知道HTTP请求的基本原理,使用Glide请求加载图片却不知道图片的缓存、解码过程……

突然感到事情很严重,也庆幸当初自己学习Android时还没有那么多框架。

回归本真

从我身边的朋友,同学,网络以及面试遇到的一些开发者来看,貌似都是言必谈框架,开发必用框架,不知道某个框架就好像落伍了一样,但这些开发者里面真正能完全弄懂自己所用框架的却占很小比例,也许这并不能覆盖整个业界的情况,但多多少少能反映出一些端倪。

于是,越来越多的人盲目跟风地使用RxAndroid、Dagger、ReactNative,其实并不是这几个框架不好,相反这几个框架非常不错,只是很多人是为用而用,没有理解其原理,没有了解其优缺点就盲目地用。

是的,技术发展日新月异,就像这个社会,总是会有新的事物出现。但在某个阶段,技术发展的同时也许会迷失了自我,前段时间有一篇文章《2016年学习JavaScript是一种怎样的体验》非常火,真心建议大家一看。其实无论技术发展得如何眼花缭乱,我们需要真正掌握最本质的东西,对于前端,我觉得是JavaScript、HTML、CSS,对于Android,我觉得是Java与Android API。万变不离其宗,回归本真,这世上本无框架。

第三方框架

其实第三方框架并非质量都不好,也并非不可使用,只是不建议大家没有选择地使用,不明所以地使用,更不建议大家靠第三方框架来堆砌App。如果没有吃透第三方框架,那么这个App就像一座华丽的大楼,如果哪天某个框架出了问题,可能就像坏了一根支撑的柱子,大厦就有可能崩塌。

因为第三方框架也是人写的,是人写的就有可能出bug。相比框架bug,更让人担心地是一种不好地风气正在蔓延。以热更新技术为例(不一一列举名称了,大家都知道的),国内真是热闹,你方唱罢我登场,有个人的,有公司的,你刚开源一套框架,过不多久,我也来开源一套,到现在怎么也得有六七八九个框架了吧!

开源的目的是为了不重复造轮子,而我们呢?大家何不齐心合力去完善一个框架呢?大家貌似都在炫耀技术:看,我家也有热更新!还有一些个人开源库的作者,求star,求推广,一夜star上千,为名还是为利?过段时间项目没人维护了,试问这样的框架你敢用吗?

当然也有一些非常好的框架,比如Square出品的,Google出品的,基本都是精品,值得学习。

选择标准

第三方框架数量众多,且还在快速增长,其质量良莠不齐。因此如何挑选框架成为一个严肃的问题,以下是个人的几点参考:

  1. 业界著名的(如Square, Google的)且经过大量使用验证的框架
  2. 长期维护且比较活跃(如提交issue)的框架
  3. 选择合适的框架,尽量小而精,不要大而全。这可能有些矛盾,因为大部分框架都会考虑通用性,如果仅需要其中一两个功能,就需要权衡了
  4. 根据开源级别,尽量选择允许修改源码的,这样一旦框架出现问题,可自行修改
  5. 对于国内的库,千万不要相信star数量

一些建议

对初学者

对于刚迈入Android开发门槛的初学者,建议不要一上来就使用各种框架,这样有两点坏处:

  1. 框架帮我们完成了功能,屏蔽了实现细节,导致自己看不到底层具体实现
  2. 框架一般抽象度较高,且对于初学者不易看懂,学习框架费时费力,事倍功半

建议初学者实打实地一行一行代码写,如自己尝试封装一个HTTP请求的功能模块,自己写一个图片三级缓存,自己实现一个线程池调度器……扎扎实实打好基础,把握住本质的东西,以后对于各种框架就比较容易驾驭了。

因此对于初学者建议是不用框架。

对中高级开发者

对于中高级开发者,如果要在项目中使用第三方框架的话,建议慎重选择合适的框架,且务必研读其源码,详细了解其实现原理、利弊等,否则一旦出现异常,都无从下手。假设App是亿级用户规模,使用任何第三方的东西都要小心,确保一切在掌握中才行。

对框架开发者

对于框架开发者,希望不要奔着名利的目的去贡献一个框架,不要重复造轮子,为大家提供真正精致优秀的框架,感谢!

0 0
原创粉丝点击