如何正确使用开源项目?

创建一些工具

创建工具是帮助他人的一种很好的方式,而且不用考虑太多复杂的问题或 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?尝试查阅源码,不要停留在本地的代码上。你的答案会使其他人收益,引导着你去给更多的开源项目做贡献。阅读其他人的代码,也许不能马上解决你的问题,而且需要花费很长时间才能理解源码,但是你会学到新的模块,新的语法以及编码的不同技巧,这些都会促使你成为一名出色的开发者。

总结

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

原文地址:https://www.cnblogs.com/tc310/p/11053072.html

时间: 2024-10-09 10:30:20

如何正确使用开源项目?的相关文章

开源项目使用经验原则

软件开发领域有一个流行的原则:DRY,Don't repeat yourself,我们翻译过来更形象通俗:不要重复造轮子.开源项目主要目的是共享,其实就是为了让大家不要重复造轮子,尤其是在互联网这样一个快速发展的领域,速度就是生命,引入开源项目,可以节省大量的人力和时间,大大加快业务的发展速度,何乐而不为呢? 然而现实往往没有那么美好,开源项目虽然节省了大量的人力和时间,但带来的问题也不少,相信绝大部分同学都踩过开源软件的坑,小的影响可能是宕机半小时,大的问题可能是丢失几十万数据,甚至灾难性的事

Pull Request的正确打开方式(如何在GitHub上贡献开源项目)

GitHub的官方帮助如下: Fork A Repo: https://help.github.com/articles/fork-a-repo Using Pull Requests: https://help.github.com/articles/using-pull-requests Merging a pull request: https://help.github.com/articles/merging-a-pull-request Closing a pull request:

【Android开发经验】移动设备的“声波通信/验证”的实现——SinVoice开源项目介绍(一)

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在APP市场上,经常有一些充满新意的应用让我们眼前一亮,比如微信的面对面加好友,支付宝的声波支付等等,都是通过声波的方式进行握手通信,今天这篇文章将介绍声波通信和声波验证的实现原理和代码实现. 首先介绍一下声波验证的原理.如果我们想发出声音,就必须震动,说话是声带在震动,手机能播放音乐是喇叭在震动.既然发出声音必须震动,那么就有震动快慢之分,我们把震动的快慢叫做声音的频率.频率低的声音低沉有力,能传播很远

PhotoView开源项目剖析

http://blog.csdn.net/wu928320442/article/details/43056731 介绍 上一节呢,我们介绍了怎么下载和编译Android源码,这节呢,我们来讨论PhotoView这个开源项目,也是我们用的非常频繁的一个,用来帮助产生一个容易实现ImageView缩放的这么个东东. 功能特性 支持放缩超出边界,多点触控和双击事件 滚动和滑动 和ViewPager等能完美兼容 矩阵变化等有回调,方便前台其他展示的改变 单击,长按都有回调提醒 源码剖析 那么怎么来学习

Java开源项目(备查)

转自:http://www.blogjava.net/Carter0618/archive/2008/08/11/221222.html Spring Framework  [Java开源 J2EE框架] Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯.Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器.然而,这仅仅是完整图景中的一部分

世界级的开源项目:TiDB 如何重新定义下一代关系型数据库

著名的开源分布式缓存服务 Codis 的作者,PingCAP 联合创始人& CTO ,资深 infrastructure 工程师的黄东旭,擅长分布式存储系统的设计与实现,开源狂热分子的技术大神级别人物.即使在互联网如此繁荣的今天,在数据库这片边界模糊且不确定地带,他还在努力寻找确定性的实践方向. 在数据库的平行世界里,黄东旭以不同的方式在追随着自己的内心.他认为,通常传统的关系型数据库无法满足海量数据处理和分析时,新一轮的窗口期也随之需求开启,但是各类劣势架构.内存架构. NoSQL 等方案都不

OSGEARTH三维地形开源项目

第一章   OSGEarth介绍 第二章   OSGEarth编译环境配置 OSGEarth的编译环境配置随着版本的不同.运行平台的不同,也有很大的差异.本章主要以Windows XP SP3(x86)为平台,Visual Studio 2010 为编译环境来介绍OSGEarth2.0的变异环境配置. 第一节  OSGEarth V2.0相关资源 OSGEarth的相关资源可以通过其官方网站(http://www.osgearth.org/wiki/Downloads)获取(所有资源文件均在关盘

如何参与一个GitHub开源项目

最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Github开源项目,只能说你开源了自己的项目,可以任别人自由下载. 那么该如何参与Github的开源项目呢?相信很多人都有这方面的疑问,网上也有一些参差不齐的教程教大家如何"Pull Request"

如何参与一个GitHub开源项目?

如何参与一个GitHub开源项目? 摘要:本文是Github官如何参与一个GitHub开源项目方给出的参与Github上开源项目的一些指导,对希望加入开源社区的开发者是一个不错的参考. 最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Github开源项目,只能