如何正确使用开源项目?

转载:http://stormzhang.com/android/2016/05/08/how-to-choose-open-source-project/

如何正确的使用开源项目?

如果你是个人练手项目,那随你心情,想怎么用怎么用,没啥需要强调的注意事项,本篇文章仅是以在商业项目采用开源库做介绍。

1. 使用成熟稳定的开源项目

现在技术日新月异,可能隔几天就会出来一个新的开源框架,但是公司的商业项目永远以稳为主,也许你迫不及待的想尝鲜体验新技术,可以在你个人业余项目进行体验学习,觉得各方面都使用掌握了,并且该框架已经有不少商业项目采用了,再考虑在公司的商业项目中使用。所以,给大家的建议是:公司的商业项目永远不要以尝鲜为主,一定要保证稳定。

2. 理解原理

如果我们在商业项目中采用了一些开源项目,前提是自己一定是理解其原理,完全掌握了才建议在商业项目使用,一些UI类的开源控件还好,尤其是对于一些框架类的开源项目,如网络请求库、ORM框架、各种图片加载库、依赖注入框架等等,不求你掌握他具体实现的每个细节,但是一定要理解其原理,并且熟练掌握他的各种API,再考虑运用到公司的项目中。

3. 不要改源码

我们知道我们在使用一些开源项目的时候,不可能永远满足我们自己的需求,我们一般都会在其基础上定制些我们自己的业务需求,这个时候建议大家不要改源码,而是在自己的项目里对引用的开源框架进行扩展,如果他不可扩展或者说扩展起来很麻烦,只能说他的设计还不够好。
为什么不建议大家改源码?因为好的开源项目一般会持续维护与更新,而一旦我们更改源码,这意味着以后我们想要更新版本变得很麻烦。所以,不是特别必要,都强烈建议大家不要改源码。

4. 使用Gradle远程依赖

对于 Android 开发来说,使用 Gradle 远程依赖是最方便,最流行的一种方式了,一行代码直接搞定,如果一个开源项目不提供 Gradle 依赖的方式,只能说有点 low 了。尽量不要使用本地 jar 或者本地 aar 的方式引用,不是不可以,更新起来稍微有点麻烦,如果我们使用 Gradle 只需更改一个版本号就直接升级了,而且使用 Gradle 还可以方便的统一管理,可以见这篇文章
Gradle依赖的统一管理

5. 请一定要封装一层

计算机史上有个万能的解决方案就是,如果原有层面解决不了问题,那么就请再加一层!
对于开源项目,我们知道有些库设计的确实很棒,使用者调用起来非常方便,一行代码直接搞定,拿图片加载库 Picasso 举个例子:

Picasso.with(context).load(imageUrl).into(imageView);

使用起来是不是特简单?你也许问我,都封装的这么好了还用得着再封装一层么?那你错了,哪怕他已经很完美了,我都会这么做:

public class ImageLoader { public static void with(Context context, String imageUrl, ImageView imageView) { Picasso.with(context).load(imageUrl).into(imageView); }}

这样我所有项目调用的方式直接就是 ImageLoader.with() ,这样做的好处是:
入口统一,所有图片加载都在这一个地方管理,一目了然,即使有什么改动我也只需要改这一个类就可以了。
随着你们业务的需求,发现 Picasso 这个图片加载库已经满足不了你们了,你们需要换成 Fresco ,如果你没有封装一层的话,想要替换这个库那你要崩溃了,要把所有调用 Picasso 的地方都改一遍,而如果你中间封装了一层,那真的非常轻松,三天两头的换一次也没问题。
这就是所谓的外部表现一致,内部灵活处理原则。

6. 做好应急,以防万一

开源项目说白了是公开的,大家都可以采用,但是永远不要完全依赖,并不是非他不可,选择的时候最好有可替代品,这也是我为什么不建议大家使用哪种大而全的框架级开源库,除非他真的特别优秀,否则不要轻易使用,因为一旦他出问题了,或者说他突然宣布某一天不开源了,那你要崩溃了,替换的代价几乎可以重写了。所以建议大家使用那种专注的开源框架,如只做网络库的,只做图片处理的,而这种大多都有替代品,一旦他出事,你还有其他别的选择。

7. 积累自己的轮子

开源项目用的多了,你会逐渐的意识到很多开源库基本是项目搭框架必须的,按照你自己或者你们公司的使用习惯,你应该积累出一套你们自己的专属「轮子」,你们项目组成员熟悉的「轮子」,一旦有新的项目开始,搭一个属于你们自己的框架分分钟的事,会大大的提升你们的开发效率!
以上,都是我这么多年采坑积累的宝贵经验,分享给你们,希望对你们真的有帮助!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,054评论 25 707
  • 如何选择开源项目? 转载至:http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDc...
    loserStar阅读 2,683评论 0 10
  • 一 关于快消业,知乎上有这样一个问题,非常因垂丝听:为什么快消行业如此高大上? 回答也很「可爱」:给你两千块的薪水...
    职问师姐阅读 271评论 0 1
  • 阿凤今年52岁,是我请的钟点工。她个子不高,干干瘦瘦的,但动作很快,力气也大。长圆脸,也干,眼睛却很大很好看,眼神...
    晴樾阅读 568评论 1 1
  • 汤小小老师教写作,她自己说是套路,其实是干货,这些都不懂还谈什么写作,她教的东西一点都不小哦!且看我的笔记,依然是...
    沫师师阅读 330评论 2 2