在饭局上,老程序员和我分享的几个GitHub开源项目的Tips

Posted Spuer_Tiger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在饭局上,老程序员和我分享的几个GitHub开源项目的Tips相关的知识,希望对你有一定的参考价值。

前言

前两天,我和一个8年python工作经验的老程序员吃了顿晚饭,然后他给我分享了几个GitHub开源项目的Tips,后来经过查阅网上的资料,整理成此文。本文主要包括开源项目的精确搜索github项目源码的在线阅读的技巧跟踪github热门项目的趋势动态,以及如何源码阅读在开源项目中做出贡献的建议。
在这里插入图片描述


1.关于开源项目的精准搜索

关于开源项目的精准搜索,通过更加细化的搜索条件,能够更加精准地找到我们“心仪”的项目源码,下面是用法的总结:

用法解释
in:name xx搜索仓库名称包含"xx"的仓库
in:description xx搜索仓库描述包含"xx"的仓库
in:readme xx搜索仓库readme文件包含"xx"的仓库
fork/stars: >=3000 xx搜索仓库fork/star数大于等于3000且与"xx"相关的仓库
size:>=5000 xx搜索仓库磁盘占用空间大于等于5000kB=5MB且与"xx"相关的仓库
pushed:>2019-01-03 xx搜索仓库更新时间在2019-01-03之后且与"xx"相关的仓库
license:apache-2.0 xx搜索仓库使用apache-2.0协议且与"xx"相关的仓库
language:java xx搜索仓库使用java编程语言且与"xx"相关的仓库
user:joshlong xx搜索仓库的用户名称为joshlong且与"xx"相关的仓库

点击这里->参考链接:你真的知道如何在 GitHub 上高效搜索开源项目吗?


2.关于github上开源项目在线阅读的技巧

就在你想要在线阅读的仓库的域名后添加"1s",一键开启新世界的大门:

在这里插入图片描述
在这里插入图片描述


3.关于如何跟踪github热门项目的动态趋势的建议

这里推荐一个近乎于完美的 GitHub 中文排行榜,在这里,所有优秀的高分项目都有,而且做出了排行! 关于该项目,作者是 kon9chunkit,GitHub 中文排行榜,帮助你发现高分优秀中文项目、更高效地吸收国人的优秀经验成果;榜单每周更新一次,敬请关注!

在这里插入图片描述

点这里->GitHub中文排行榜

跟踪优质的github开源项目的站点推荐ヽ(•ω•。)ノ,向下看↓。

站点名称及链接相关介绍
GitHub Trending是来自于 GitHub 官方的项目趋势列表,一些 Star 增长比较快的项目会在这里出现。开发者可以针对不同编程语言进行过滤筛选,是个挖掘优质项目的好渠道。
GitHub TopicGitHub 正在慢慢优化项目的信息分类,让一些优质开源项目得到更有针对性的推送。早期大部分开发者都是 Trending 或关注的人的动态来了解一些开源项目,但这样的曝光量显然对一个新启动的开源项目不太友好,因此后续 GitHub 应该会推出一些更为丰富的渠道,让大家可以更好的挖掘一些优质的开源项目。
Hack News技术人常逛的一个网站,著名 YC 创始人 Paul Graham 搞的,也是不少优质开源项目的起源地。不少开发者会时常上去推荐自己的开源项目,说不定你现在在用的某个开源项目,可能一开始就是通过这个渠道被人知晓,然后慢慢发展壮大的。
Changelog这个渠道可能知道的人相对来说会少一些,但是质量却很高,很多开源项目在不为人知的时候就已经有出现在这里了,Changelog 的 nightly 邮件我订阅了多年,有时闲着无事我就会去挨个翻出来看一看。
Reddit这里免不了还是要谈到 Reddit 这个大杂烩网站,上面的 opensource 主题也有不少优秀的开源项目,但是因为 Reddit 上面主题繁多,其本身也不是针对开发者的垂直网站,因此更新的频率会低一些。
Git Hunt一个开源的 Chrome 插件,把你 Chrome 的 Tab 页转为 GitHub 开源项目的推荐页,我是这个插件的重度用户,装了好几年,从来没卸载过,自认为是开发者必装浏览器插件之一。有时候用 Chrome 搜东西的时候,⌘+T 常常会给我意向不到的惊喜。

点这里->参考链接:我是如何发现优质开源项 目的?


4.关于如何阅读github项目源码的建议

Tips—1:写注解

写注解是在阅读代码中最重要的一个步骤,在我们阅读的源代码一般来说是我们不熟悉的系统,阅读别人的代码一般会有几个问题:

  1. 搞明白别人的编程思想不是一件很容易的事情,即使你知道这段程序的思路的时候也是一样。
  2. 阅读代码的时候代码量一般会比较大,如果不及时写注解往往会造成读明白了后边忘了前边的 现象。
  3. 阅读代码的时候难免会出现理解错误,如果没有及时的写注解很难及时的发现这些错误。
  4. 不写注解有时候你发生你很难确定一个函数你时候阅读过,它的功能是什么,经常会发生重复阅读、理解的现象。

写注解的核心思想如下:

  1. 猜测的去写刚开始阅读一个代码的时候,你很难一下子就确定所有的函数的功能,不妨采用猜测的方法去写注解, 根据函数的名字、位置写一个大致的注解,随着对项目源码的深入理解,不断地调整注解
  2. 在核心代码段要写较为详细的注解有一些函数或类在程序中起关键的作用,那么要写比较详细的注解。这样对你理解代码有很大的帮助。

Tips—2:学会重复阅读

  1. 一次就可以将所有的代码都阅读明白的人是没有的。至少我还没有遇到过。 反复的去阅读同一段代码有助于得代码的理解。 一般来说,在第一次阅读代码的时候 你可以跳过很多一时不明白的代码段,只写一些简单的注解,在以后的重复阅读过程用,你对代码的理解会比上一次理解的更深刻,这样你可以修改那些注解错误的地方和上一次没有理解的对方一般来说,对代码阅读3,4次基本可以理解代码的含义和作用。

Tips—3:运行并修改代码

  1. 如果你的代码是可运行的,那么先让它运行起来,用单步跟踪的方法来阅读代码,会提高你的代码速度。 代码通过看中间变量了解代码的含义,而且对 以后的修改会提供很大的帮助。关于如何进行断点调试,请参考这篇博文:全网最实用的 Debug调试技巧汇总以及这篇博文:Pycharm教程–断点调试
  2. 用自己的代码代替原有代码,验证自己的猜想,但在之前要保留源代码。 600行的一个函数,阅读起来很困难,编程的人不是一个好的习惯。在阅读这个代码的时候将代码进行修改,变成了14个函数(每一个大约是40-50 行左右)。

点这里->参考链接:如何有效阅读Github上开源项目代码?


5.关于如何在github开源项目中做出贡献的建议

如何找到那个你想贡献的项目?

在面对开源项目时,先端正态度。

要参与到开源,就必须成为那个能发现或解决问题的人。 找到那个你感兴趣的项目,从点滴小事做起,修复文档的无效链接和错别字是参与开源,发现问题并详述、复现问题也是参与开源。

28% 的贡献工作 来源于对项目文档的优化,如更正错别字、优化排版、提交翻译。

当你这样->

“这项目有个地方错误处理没写好,我看看代码...嗯,就是个智障问题,顺手PR一波…”

“这项目怎么连Xxx都不支持…我看看咋整…嗯,做出来了,顺手PR一下…”

“你这项目怎么不开源?不开源就是原罪啊!所有项目都应该AGPLv3!所有人都应该加入FSF,给自由软件打钱”

然后,继续保持前面那种精神,再加上『不重复造轮子所以尽量用开源社区写好的代码』,多写代码,你应该就能变成一个优秀的贡献者。

除此之外,你可以通过下面的这些渠道,来发现你感兴趣开源项目。

如何提交贡献?

为了更加高效的沟通与合作,请确保在你进行提问或提交 PR 的时候,做到了以下几点:

  • 给定上下文,别没头没尾
  • 提前做好准备工作
  • 提前阅读相关文档与资料
  • 说话简明扼要
  • 尽量让沟通信息公开透明
  • 提问时请保持耐心
  • 尊重社区的决定
  • 最重要的是,保持高雅

做到上面几点后,你还需要搜索项目 issue、README、stackoverflow 等渠道,确保问题未被其它人修复。最好,通过以下几种方式来提交贡献:

  • GitHub issue - 发起提问,进行讨论
  • GitHub pull request - 提交解决方案
  • 其它渠道 - Stack Overflow、IRC、Slack

提问的时候,为了减少双方沟通的时间,请使用最为高效直接的提问方式。推荐阅读:点这里->参考链接:提问的智慧

在你参与贡献之后

每个人在一开始参与贡献时,内心都较为忐忑。一般在你参与贡献后,会发生以下几种情况:

1)没有得到任何反馈

首先,确保你提前核对过项目的各种情况,具体可查看该 核对清单

如果一切都正常,可在一周后尝试联系项目相关人员,询问具体情况。

2)有人更改了你的贡献

在你得到相关通知后,出于礼貌与高效沟通,请及时给出反馈。因为他人可能花了不少时间来审核你的问题 / 代码,然后发起的更改提交。

如果你没有时间处理他人提交的更改,也请提前告知提交者与项目维护人员,找到一个可以接手并处理该问题的人。

3)你的贡献未被接受

这种情况很正常,一般作者也都会说明未被接受的具体原因。如果没有,可以在项目的相关讨论帖下询问作者具体原因。

4)你的贡献被接受了

恭喜你,你作出的贡献真真切切帮到了其他人。希望后面接着坚持,请记住,千里之行始于足下。

点这里->参考链接:如何在GitHub上做一个优秀的贡献者?

以上是关于在饭局上,老程序员和我分享的几个GitHub开源项目的Tips的主要内容,如果未能解决你的问题,请参考以下文章

Github上的几个C++开源项目

华为HCNP老学员分享学习的几个境界

硬核! Github上 ,star超高的Java 开源项目分享给你!

学习React Native必看的几个开源项目

分享几个优质开源项目 | 电商类app,趣享 gif,研发助手DoraemonKit,github小程序

从GitHub下载免费开源软件太慢,推荐几个网站轻松提速!