如何从GitHub上调研良好的开源项目,并魔改应用于工作中? ...

打印 上一主题 下一主题

主题 2002|帖子 2002|积分 6006

在 Go 语言学习中,我们经常会去学习一些良好的开源项目。但是学完之后,发现很快就忘记了大概学习效果并不好。学习一个开源项目最好的方式就是围绕这个开源项目进行实战。比方,直接魔改这个开源项目并应用于工作中。本文来介绍下如何调用,并魔改一个开源项目。
题目拆解

在学习开源项目的过程中,如果用需求来驱动学习,不仅效率是最高的,而且学习的过程也是工作产出的过程,可以说是一箭双雕。基于一个良好的开源项目来进行魔改,可以拆解为以下 3 个题目(大概使命、方法):



  • 需求从哪里来?
  • 如何查找良好的开源项目?
  • 如何进行二次开发?
接下来,我们就分别看下这3个题目。
需求从哪里来?

在我看来,需求来源于工作。这些需求可以是产物经理交给你的某一个详细产物需求,也可以是可以大概资助团队进步工作效率的工具,还可以是可以大概进步自己工作效率的工具。
总之,如果有明白的工作需求最好,如果没有明白的需求,我们就要创造需求。我们可以思考工作中的痛点、难点,并将它们转化成需求。比如,团队发布版本,每次都是人工发布,必要登陆到不同的服务器,摆设不同的组件和配置。如许效率低不说,还容易由于人为失误造成现网故障。这时间,你就可以将这些痛点抽象成一个需求:开发一个版本发布系统。
有了需求,接下来我们就要完成它,也就是进入到实践环节。那么如何实践呢?在我看来精髓在于两个字:“抄”和“改”。
上面,我们抽象出了一个需求:开发一个版本发布系统。如果自己从0开发出一套版本发布系统,工作量无疑是巨大的。而且,以我们这个阶段的水平,即使花费了很多时间开发出一个版本发布系统,这个系统在功能和代码质量上也无法跟一些良好的开源版本发布系统相比。
以是,这时间最好的方法就是在GitHub上找到一个良好的版本发布系统,并基于这个系统进行二次开发。如许,你不仅能学习到一个良好开源项目的设计和实现,还可以大概以最快的速度完成版本发布系统的开发。
如何查找良好的开源项目?

工作中遇到工作需求不知道怎么实现,大概不太想从 0 到 1 去实现。最好的方式就是魔改一个良好的开源项目。但是如何能查找到这个开源项目,并且确保是一个良好的开源项目呢?本末节,以“如安在GitHub上找到良好的版本发布系统”为例来给你介绍下。
下面,我把我自己的方法分享给你。我重要通过5个步骤来搜索,如下图所示:

这里我联合图片,详细分析下这5个步骤。

  • 在GitHub搜索栏中按语言搜索:language:go 版本发布中,language:go分析我们要搜索语言范例为Go语言的项目;版本发布是我们搜索项目时的关键词。这个关键词对搜索结果影响很大,必要你合理填写。这里有个本领,如果搜索版本发布,搜索出的项目很少,那么可以减少关键词再次搜索,比如搜索发布。
  • GitHub搜索页面的Sort options选择Most stars:由于GitHub项目很多,我们不可能看完所有搜索出来的项目,以是这里我们要选择性地去检察。你可以通过Most stars进行排序,一般来说Star数越多分析项目越受接待,而受接待的原因很可能是整个项目在同类项目中比较良好。根据我之前的搜索经验,一些Star数少的项目也可能很良好,最终还是必要你根据自己的理解去判断。
  • 看描述:由于项目比较多,我们不可能认真去研究每个项目,以是要快速相识项目,最简朴的方式是先看描述。如果描述符合预期,那么可以将这个项目在新的浏览器Tab页打开,大概将项目地点生存起来,等开端筛选完所有项目后,再详细检察这个项目的README以及代码。
  • 看项目名字:一些良好的项目可能没有描述,这时间可以通过项目的名字来判断。
  • 根据Code做筛选:如果我们搜索的项目很冷门,搜索GitHub后只有寥寥几个搜索结果,而且搜索出的项目也不是我们期望的。那么这时间,你可以从Code中来筛选。
通过上面这5步,我们开端搜索出了匹配的项目,并知道了如何对这些项目做开端的筛选。接下来,你就必要按页来筛选页面中的开源项目,然后从第1页不停筛选到第100页。GitHub一页默认会展示10个开源项目,以是,如果按照这种方法,最终你可能必要调研10 * 100 = 1000个开源项目。固然,也不一定每次都要从第1页不停看到第100页,如果后面的项目明显都跟预期的需求不匹配,可以不用再继续看了。
用如许的方法,我们应该可以找到符合要求的良好开源包,而且该开源包极有可能是“最”良好的包。
此外,GitHub 上的 awesome-go 项目也根据分类记录了很多包和工具,你也可以在这个项目中寻找。我的建议是优先从GitHub上找,再在 libs.garden 上找,最后再参考 awesome-go项目。
到这里,我们已经通过自己的调研,找到了一堆GitHub上的开源项目。为什么我们要找这么多开源项目呢?重要目的有两个:


  • 确保自己基于一个最优的开源项目来进行二次开发,一开始便站上至高点。
  • 添补自己脑海中的Go生态图。
不过,这些开源项目只是颠末了开端筛选,里面有很多是不满足我们需求的,甚至可能跟我们的需求完全不一致。以是,我们还必要进行二次筛选,可以通过精读开源项目的README来筛选。如果有必要,并且项目摆设简朴,你也可以摆设这个开源项目,亲自体验一下。
颠末第二次的筛选,我们已经筛选出了一些可以大概满足要求的良好开源项目。这时间,我们还必要再颠末一轮筛选。这轮筛选,我们要从各方面来对比这些开源项目,并从中选出一个最合适的开源项目,来进行二次开发。这个开源项目,你可以自信地跟你老板说它是一个最优解。
如何进行二次开发?

接下来,你就可以基于这个项目进行二次开发,最终精彩地完成设定的需求。那么如何对选定的项目进行二次开发呢?我总结了5个步骤:

  • 手动编译、摆设这个开源项目。
  • 阅读项目的README文档,跟着README文档使用这个开源项目,至少运行一遍核心功能。
  • 阅读核心逻辑源码,在不清晰的地方,可以添加一些 fmt.Printf 函数,来协助你理解代码。
  • 在你理解了项目的核心逻辑大概架构之后,就可以尝试添加/修改一些匹配自己项目需求的功能,添加后编译、摆设,并调试。
  • 二次开发完之后,你还必要思考下后续要不要同步社区的代码,如果必要,如何同步代码。
在你通过“抄”和“改”完成需求之后,记得还要编写文档,并找个合适的时机在团队中分享你的劳绩和产出。这点很重要,可以将你的学习输入酿成工作产出。
看到这里,你可能想说:我开发一个项目而已,调研这么多项目,花这么多时间,值得吗?我觉得是值得的,由于这种学习方式会带来下面这几个利益。


  • 最优解: 你可以很有底气地跟老板说,这个方案在这个种别就是业界No.1。
  • 高效: 基于已有项目进行二次开发,可以进步开发和学习效率。
  • 产出: 在学习的过程中,也有工作产出。个人成长、工作贡献可以一起得到。
  • 知识积累: 为今后的开发生涯积累项目库和代码库。GitHub就是一个大的代码仓库,里面险些囊括了你开发过程中必要的所有技能实现。你必要做的实在就是找到此中的最优实现,并升级成自己的实现。这是一个从量变到质变的过程,最终,你的研发模式会酿成Ctrl + C + Ctrl + V。这首先意味着你的开发工作会越来越轻松;另外,你Ctrl + C的是一个良好的开源项目或代码,Ctrl + V的是颠末你改进后的代码,这就意味着,你基于这个开源项目或代码二次开发后的实现一定是 (你, GitHub最优解) 二元组中最好的一个实现。
   

  • 知识星球:云原生AI实战营。10+ 高质量体系课( Go、云原生、AI Infra)、15+ 实战项目,P8 技能专家助你进步技能天花板,入大厂拿高薪;
  • 公众号:令飞编程,分享 Go、云原生、AI Infra 相关技能。回复「资料」免费下载 Go、云原生、AI 等学习资料;
  • 哔哩哔哩:令飞编程 ,分享技能、职场、面经等,并有免费直播课「云原生AI高新就业课」,大厂级项目实战到大厂面试通关;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表