如何正确使用开源项目?

创建一些工具

创建工具是帮助他人的一种很好的方式,而且不用考虑太多复杂的问题或 API 设计。你可以开发一个你最喜欢的框架或平台的模板。你可以将到的知识和工具集中到一个项目中进行很好的诠释,并做好随时更新和发布新特性的准备

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

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

2.理解原理

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

3.不要改源码

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

4.使用Gradle远程依赖

对于 Android 开发来说,使用 Gradle 远程依赖是最方便,最流行的一种方式了,一行代码直接搞定,如果一个开源项目不提供 Gradle 依赖的方式,只能说有点 low 了。尽量不要使用本地 jar 或者本地 aar 的方式引用,不是不可以,更新起来稍微有点麻烦,如果我们使用 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.积累自己的轮子

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

在使用开源项目的时候,你是否遇到了 bug?尝试查阅源码,不要停留在本地的代码上。你的答案会使其他人收益,引导着你去给更多的开源项目做贡献。阅读其他人的代码,也许不能马上解决你的问题,而且需要花费很长时间才能理解源码,但是你会学到新的模块,新的语法以及编码的不同技巧,这些都会促使你成为一名出色的开发者。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 学习php开源项目的源码指南

    一.先把源代码安装起来,结合它的文档和手册,熟悉其功能和它的应用方式. 二.浏览源代码的目录结构,了解各个目录的功能. 三.经过以上两步后相信你对这个开源的产品有了一个初步的了解了,那现在就开始分析它的源码吧.这一步我们开始分析源代码框架.例如入口方式是单入口还是多入口,页面之间的调用规则,能根据规则找出某个功能用到的页面. 四.熟悉源代码的代码写作风格,例如缩进方式,排版格式等. 五.熟悉一下源代码用到的数据库和表,可以参考它的技术支持文档. 六.经过以上几步相信大家已经对这份源代码有了更深刻

  • Ruby微信开发的几个开源项目介绍

    最近陆续有不少用Rails开发微信项目的朋友在Github上开始使用weixin_rails_middleware.weixin_authorize,也不少人谈到Ratchet,春节开始到现在,一直有做微信的开发,现在在论坛上发布出来,希望让更多人知道这些gem的存在,更快速的完成你们手中的任务. 1.一(两)条命令搭建Rails微信版本 按照最简洁的速度,10分钟可以跑起一个微信的项目: https://github.com/lanrion/weixin_rails_middleware 自动

  • Android 开源项目侧边栏菜单(SlidingMenu)使用详解

    项目下载地址:https://github.com/jfeinstein10/SlidingMenu 注意: SlidingMenu依赖于另一个开源项目ActionBarSherlock,所以需要将ActionBarSherlock添加作为SlidingMenu的库工程,否则会报资源找不到错误. 然后再将SlidingMenu添加到自己的工程中去. SlidingMenu集成常见错误: Jar mismatch! Fix your dependencies :引用的工程和自身工程以来的jar包版

  • web2.0的几个开源项目

    Diggclone-开源digg类程序官方:http://www.talkingpixels.org/diggclone/index.php演示:同digg.com类似 Aroundme-开源社会化网络程序官方:https://savannah.nongnu.org/projects/aroundme/演示:http://www.barnraiser.org/demos/(社会化网络程序通常都是收费的,相信这个是目前唯一免费的social netwokr项目啦) Lilina–开源RSS聚合器官

  • Android开源项目PullToRefresh下拉刷新功能详解

    先看看效果图: 开源项地址:https://github.com/chrisbanes/Android-PullToRefresh 下拉刷新这个功能我们都比较常见了,今天介绍的就是这个功能的实现.我将按照这个开源库的范例来一点一点介绍,今天是介绍比较常见的PullToRefreshListView,是让listView有下拉刷新功能. 1.下载项目包,将library包导入即可,其他的包暂时不用 2.分析源码,看我们可以设置的有哪些 <?xml version="1.0" enc

  • 使用PHP把HTML生成PDF文件的几个开源项目介绍

    利用PHP编码生成PDF文件是一个非常耗时的工作.在早期,开发者使用PHP并借助FPDF来生成PDF文件.但是如今,已经有很多函数库可以使用了,并且能够从你提供的HTML文件生成PDF文档.这让原先耗时的工作变得非常简单了. FPDF是很早就被使用的,其特点如下: FPDF FPDF是一个允许使用纯PHP生成PDF文档的PHP类,换句话说,没有使用PDFlib 函数库.FPDF中的F代表免费和自由:你可以在任何情况下使用,并且支持自定义,来满足你特定的需求 特点: 1.可以选择单元.页面格式和边

  • 发布一个基于TokyoTyrant的C#客户端开源项目

    这里开放的是客户端主要功能代码,开源的目的一方面是希望更多的人来学习研究TC和TT,同时大家可以下载本C#源码继续优化提升性能,同时查找BUG,必定本人精力能力有限,而Discuz!NT企业版的功能点又太多(抽空会多写文章进行介绍)实在有些力不从心了,呵呵:) 好了,为了便于使用,下面先对源码中的项目文件进行说明: 源码包中包括三个项目:      1.Discuz.EntLib.TokyoTyrant 核心功能代码(目前名空间暂以产品命名)      2.TTSample 主要用于加载测试数据

  • 利用AJAX开源项目 在网页里播放视频实现方法

    1.参看 >http://videobox-lb.sourceforge.net/ >http://sourceforge.net/project/showfiles.php?group_id=203672 >下载videobox 1.1.zip把它解压到asp.net项目的目录下,并用"Add New Item"新建一个Html文件用以播放视频.Html文件完整代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM

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

    创建一些工具 创建工具是帮助他人的一种很好的方式,而且不用考虑太多复杂的问题或 API 设计.你可以开发一个你最喜欢的框架或平台的模板.你可以将到的知识和工具集中到一个项目中进行很好的诠释,并做好随时更新和发布新特性的准备 1.使用成熟稳定的开源项目 现在技术日新月异,可能隔几天就会出来一个新的开源框架,但是公司的商业项目永远以稳为主,也许你迫不及待的想尝鲜体验新技术,可以在你个人业余项目进行体验学习,觉得各方面都使用掌握了,并且该框架已经有不少商业项目采用了,再考虑在公司的商业项目中使用.所以

  • Android Studio 导入开源项目的正确姿势及注意事项

    报错:Error:(2, 0) Plugin with id 'realm-android' not found. 注意:项目中用到的插件,需要根目录下的build.gradle中添加它classPath, 执行下面的build.gradle文件覆盖前先检查下,或者备份一个. 当我们在Github上看到优秀的项目时,往往想下载下来学习,但是导入到AS中经常报各种错误,那么导入开源项目的正确姿势是什么呢? (1) 第一步,新建一个项目,跑一遍. (2) 打开 我们从Github下载的项目的文件.依

  • go开源项目用户名密码验证的逻辑鬼才写法

    引言 这两天在做微服务上云的事,之前一直是本地运行,后来在服务器搭建了生产环境集群.上云时出现了一些幺蛾子 云上的服务都需要身份验证的,没有专用网关的话,至少也要设置 basicAuth(用户名+密码的方式) 今天使用 Golang 知名项目 Viper 连接远端配置中心 Consul 的时候发现怎么连接都不行.在不使用密码的情况下代码应该是这样子的 按理说,basicAuth 的话只需要在 URL 那里使用 username:password 就可以了,例如: username:passwor

  • GitHub入门教程 手把手教你最简单的开源项目托管

    自从google code关闭了下载服务了之后,GitHub作为了目前最好用的免费开源项目托管站点,众多开源项目都托管在github,其中不乏著名的播放器MPC-HC. 不习惯于英文的朋友,难免少不了要进行摸索一番,甚至会因此头大而放弃. 这里将手把手地教大家一些本人的入门心得. 1.要托管到github,那你就应该要有一个属于你自己的github帐号,所以你应该先到github.com注册 打开浏览器 在地址栏输入地址:github.com 填写用户名.邮箱.密码 点击Sign up即可简单地

  • Android开源项目PullToRefresh下拉刷新功能详解2

    先看看效果图: 这里介绍的是PullToRefreshGridView的使用方法,和之前的PullToRefreshListView方法如出一辙,因为这个开源项目模块化很棒,所以很容易实现.等于说我们可以按照之前使用控件的方式来操作,不用考虑其他的问题. 思路:  1.写布局文件,放入可以下拉刷新的控件  2.找到下拉刷新的控件,设置监听器,并且在刷新方法中开启一个异步任务来操作  3.通过这个下拉刷新控件的getRefreshableView()方法来得到GridView对象,按照正常的操作来

  • Android热更新开源项目Tinker集成实践总结

    前言 最近项目集成了Tinker,开始认为集成会比较简单,但是在实际操作的过程中还是遇到了一些问题,本文就会介绍在集成过程大家基本会遇到的主要问题. 考虑一:后台的选取 目前后台功能可以通过三种方式实现: 1.自己搭建后台布丁下发系统 2.第三方提供的服务,目前如原微信simsun大神的个人tinkerpatch平台,目前出于内测阶段,暂时免费.后期应该会按下发量对app进行收费. 3.腾讯Bugly提供的服务,提供了热更新的下发后台,集成到了bugly的升级sdk中.免费. 根据公司的精神,我

  • CentOS8上用Docker部署开源项目Tcloud的教程

    一.安装Docker 1.我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上) root账户登录,查看内核版本如下 uname -a 2.把yum包更新到最新 yum update (期间要选择确认,输入 y 即可) 3.安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils

  • Python优秀开源项目Rich源码解析的流程分析

    这篇文章对优秀的开源项目Rich的源码进行解析,OMG,盘他.为什么建议阅读源码,有两个原因,第一,单纯学语言很难在实践中灵活应用,通过阅读源码可以看到每个知识点的运用场景,印象会更深,以后写代码的时候就能应用起来:第二,通过阅读优秀的开源代码,可以学习比人的代码规范.设计思路:第三,参与到开源社区,获得更广阔的的发展前景:第四,面试加分项.所以,有时间的话还是建议大家多读读优秀开源项目的源码. 下面进入今天的主题,这个开源项目的名字叫Rich,地址:https://github.com/wil

随机推荐