我是如何阅读开源项目的
读开源项目有什么好处
开源项目的代码质量相对来说都比较不错,很多设计思想值得参考。同时也能了解一些相对比较前沿的技术。

我个人认为读开源项目能够学到以下几个方面:
1文档编写,设计,讨论沟通,方案权衡等
2开发实现,包括Git 规范,代码规范,模块抽象,通信实现,性能优化,单元测试,集成测试,E2E测试
3推广运营,迭代演进,版本发布
4周边工具生态的思考,CICD建设等

因为有这么多的好处,所以我基本上每隔一段时间,就会去攻读一个比较优秀的开源项目。

为什么会写这篇文章
spring boot原理解读书籍我自认为自己读了不少的开源项目,之前都是处于自己懂了,但是没有系统的整理阶段。我认为是不成体系的,思考是不完整的,所以我希望自己逐步把读的开源项目写成系列文章。

笔记和博客一个很重要的不同是,博客更多需要让别人能读懂,语句要通顺,逻辑要自洽,结构要清晰。

我是如何做的
确定要读某个项目后,我会先把代码clone下来,选定某个release版本,然后尝试在本地能否编译通过,并且一定会在本地或者自己的云服务里把代码跑起来。运行一个最简单的demo,可以帮助我了解这个项目的最小集。

然后我会从这个demo开始,看代码里用了哪些模块,把大模块梳理出来,尝试理解通信过程。

之后我会带着疑问和场景去阅读源码。因为很多开源项目代码非常多,如果毫无章法的一行
一行读,不仅效率低下,而且读完了基本上没有什么收获。就像我们高中做英语阅读理解一样,会先扫一下问题,然后带着问题去跳读,效率会非常高。

比如我在读 kcp 源码的时候,我会提出很多的疑问:
●tcp 如何 over kcp 的?
●为什么 kcp 可以带来更多的延时降低,用空间换时间?
●kcp 和 udp 的关系是怎么样的,层级如何
●为什么 tcp 的 dial 可以直接 dial kcp 的 端口 ? 它的 listener 做了什么?
● ......


解决了自己的问题,如果可以,我会去搜下网络上其他人对项目的解读,不一定要完全信,但是可以打开思路。别人看到了相同项目值得探索的东西,这个能帮助自己掌握项目。

当然我们不是追求全面,某些项目确实非常庞大,人的精力也是有限的,没有必要完美主义
面面俱到。精通某个模块并且完全吃透,比蜻蜓点水的扫读要好不少。比如kafka源码,如果是我来读,我会在意它的 broker 高并发模型,读写模块,元数据管理模块,至于协议细节我可能没那么在乎。

后续的优化空间
读完之后,尽快抽出时间整理成文章,对于大项目最好出系列文章。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。