咱们使用开源软件大部分状况是为了避免重复造轮子,使用一些别人写好的具备通用性的代码来减小咱们的代码量,提升开发效率,减小开发成本。并且使用一些优秀的开源软件会比咱们本身开发的好,毕竟它们被不少人使用,经受了不少人不少次的检验。
可是,有些开源软件却很坑,用它们到最后发现有不断的坑,到头来发现不如直接用底层的、未封装的API,或者本身开发。下面说些应该避免的坑:编程
- 社区小(好比GitHub的star少)的开源软件
对于社区小的开源软件,当你遇到问题,很难快速解决。而那些社区大的开源软件,Google搜下很容易搜到你遇到的常见的问题。大小是相对的,那么谈谈如何比较两个开源软件的社区大小,能够比较它们在开源平台的收藏数量、issues数量、PR数量,也能够用Google trends对比下,也能够对比下Google搜索结果数目,也能够对比下它们在stackoverflow等平台搜索结果数目。
- 国产开源软件
不是看不起国产开源软件,国产优秀的开源软件其实也有一些。但总体上看,国产开源软件文档质量不行。社区小,通常不多有外国人使用,而国外的开发者数量和质量明显高于国内。举个例子,fastjson和jackson,虽然fastjson应该比jackson性能好一点,但fastjson的功能和代码质量不如jackson,并且fastjson社区也不如jackson,当用jackson遇到问题时,用Google英文搜索下,通常很容易搜到解决办法,而用fastjson遇到问题通常只能去看看fastjson那一点点文档。顺便提一下,用中文搜索问题,通常比较难很快找到解决办法。我想缘由大概以下:一、Google的中文搜索能力不如英文(baidu啥的更别谈)二、国内开发者鱼龙混杂,因为编程入门门槛低,有好多水平欠缺的开发者写了大量低质量博客,中文博客的信噪比很是糟糕,不多有我感受还能够的博主。举个例子,CSDN博客质量简直不堪入目,我如今直接用扩展屏蔽了CSDN。
- 再也不维护的或代码贡献频率低的开源软件
在我开来,软件开发者应该要对本身的软件负责,就是一直对本身开源的软件质量负责,close全部issues,解决软件bug。作到这点很难,连我本身一些玩具开源项目都再也不维护,但我会在README中标注再也不维护,减小浪费有些人的时间,我也会及时close每个issues。若是实在不想维护,GitHub还有archive的功能,将项目设置为只读。在我看来,解决issues是开源的游戏规则,而open issues也是游戏规则,若是你们都这样,开发者对软件负责,软件使用者也对软件负责,开源社区才能健康发展。
- 文档少,代码注释少的开源软件
若是一个开源软件没什么文档,或文档质量不行,那么软件的使用者也不会不少,软件自己也很难发展,我感受这样的开源意义少了不少。
下面谈谈如何选选择坑较少的开源软件,大概就是避免上面的坑吧。和其余不少行业同样,软件行业也在于实践,当你多用一些开源软件,多踩一些坑,天然会避免不少坑,若是实践了不少次,但依然遇到不少坑,我想大概有两种可能。一是你不适合搞软件,没有那一点点感受。二是你很厉害了,已经找不到一些适合你的开源软件了,这时候应该是你造轮子的时候了。json