1.对第三方库的封装
使用了蛮多第三方库,也加了不少群,发现很多萌新(甚至是工作了近一年的准初级程序猿)在使用别人的库时,都喜欢直接照着文档就在自己的项目中到处使用,完全没有意识到这么写的隐患。如果一个库需有很多配置参数,相信大部分人还是知道,应该自己写个工具类来进行统一配置,但是当一个库的用法比较简单时,许多人就喜欢直接到处写了,这样其实会有很多问题的。
首先,耦合过强不易替换。不对第三方进行封装,最直接的影响就是不能够快速替换,以我们最常见的图片加载库来说,早几年比较流行的图片加载框架是一个叫做ImageLoader的库。试想一下,一个app中,使用图片加载的地方,少则十几处,多则几十处,如果你每个地方都引用了ImageLoader这个类,那么当你某一天需要换掉这个库的时候会发生什么?没错,你需要到处修改,虽然studio有重构快捷键和全局查找功能,可以方便的找到所有引用的地方,但是明明可以靠代码解决的问题,又何必给自己挖坑呢。
其次,不易修改。有些库,可能本身配置就比较少,刚好它的默认配置就能满足你当前的需求,这时,很多人也就直接用了。那么,你们有没有想过,后面你发现需要修改某一个属性配置时要怎么办呢?没错和上面类似的,你又要去到处该,简直就是地狱了。
那么我们该如何对第三方进行封装呢?这里只说几点我认为的基本要求,1.第三方库的所有类只能出现在自己的封装类中,项目里其他任何地方不应该对第三方库产生引用,只有这样才能做到,你想替换这个库时,只进行最少的代码修改。2.如果项目本身对一个库的配置没有太多变化的时候,尽量不要把配置过多的暴露到封装类之外,这样做可以保证封装类调用的简洁性。
下面以一个下拉刷新库为例进行简单封装
刷新库SmartRefreshLayout--https://github.com/scwang90/SmartRefreshLayout
许多萌新,基本上拿到一个库就开始照着别人的文档往项目加了,比如这样用
调试了一下,没什么问题,然后就开始在项目各处使用。突然有一天,产品经理发话了,这个刷新样式不好看,重新设计,然后你就一脸懵逼了,你这个设置写的到处都是,只能去一个一个改了。当然这个问题其实是个很基础的问题,基本上有个把月经验的同学都知道需要统一配置,所以也许他们会这么写:
这也就是我上面说的对第三库进行统一封装的一部分,我们这里采用的是对通用配置进行统一封装,好了现在产品经理告诉我,你想改几次样式?来来,随便改,皱下眉头算我输。
拥有了上面的小技巧,大家终于能轻松一点。然而,你刚躺下,被子都没捂热,突然产品经理一个电话,XX你的app刷新就崩溃了。然后你就开始debug看了,最后发现不是你的问题,是这个库本身就有bug,然后你打算上github上提给作者,一看,我去,作者竟然已经宣布停止维护了。那怎么办?有些同学会选择把库下载下来,自己试着修改,不过碍于水平有限,大部分人在尝试了一下修改然后无果后都会选择换成另一个库。
好嘛,我们现在又来换库试试,去掉库依赖,我去,竟然有几十个类和xml报错,这次是真的绝望了,看来只能删代码跑路了。。。
开个玩笑,我们肯定不可能跑路的,只能硬着头皮改。关键是改之前你要考虑,下次再出这个问题怎么办呢?当然还是通过封装来解决了:
登录 | 立即注册