看源码的意义总结起来包含但不限于以下几点

作者:xybaby 
来源:https://www.cnblogs.com/xybaby/p/10794700.html

由于项目的需要,最近花了很多时间看开源项目的代码。在本文中,我简要总结了我对为什么以及如何查看源代码的想法。

看源码的意思

看源码只是一种方法,一种手段,不是目的。我也给自己定了“读xxx源码”的目标,现在看来真的很傻,一点都不聪明(具体的、可衡量的、可达到的、相关的、有时间限制的)。

只有弄清楚阅读代码的目标,才能有的放矢,抓住重点,高效完成任务。

看源码的意义包括但不限于以下几点:

第一:解决问题(BUG)

只要是代码,就会有bug,只是bug越来越少,深有浅。

如今,每个人都喜欢发布和使用开源项目。不同的开源项目在社区成熟度和代码质量上存在很大差异。遇到错误并不奇怪。

当然,如果遇到bug,一定要先在网上搜索类似的问题。一般可以在google、Stack Overflow、项目的issues中搜索对应的关键词。如果找不到,只能看源码解决。

第二:知道为什么

我在如何学习新技术以及选择团队技术时要注意什么中提到。如果我们需要在自己的项目中使用一个开源项目,那么我们就必须了解这个项目的优缺点,知道其中的原理。源代码有什么用,对一些细节(尤其是项目的优势和特点)进行深入研究。

如果是成熟的开源项目,遇到问题或许可以google很多答案;但如果是一个快速发展的开源项目,多了解它的架构和核心原理也可以帮助你快速定位问题。

另外,有些项目文件可能没有那么丰富,但是必须要使用,那么如何正确使用姿势呢?还得参考源代码。

第三:学习

看源码也是一种很好的学习方式(虽然不一定是最好的方式),尤其是对于比较好的开源项目,可以大开眼界。

即使出于学习目的,也有很多重点,例如

第四:改造

一般来说,我们一开始只使用一个开源项目,但是随着使用的深入,我们会发现我们需要的一些功能没有得到很好的支持,向项目组提出的问题也可能得不到快速响应。

这时候就需要分支,改代码,添加功能了。当然,最好在自己的分支中向原有项目提交合并请求,新特性更好,并反馈开源项目,比如阿里巴巴的Blink。

第五:学习

他山之石可以攻玉。如果你需要重新开始打造自己的轮子,参考一些现有的优秀轮子绝对是有益的。

副产品:找工作

这不应该是我们阅读源代码的起点,但它确实可以作为在实践中找到工作和面试的副产品。

如何阅读源代码

看源码的目的极大地影响了看源码的方式和需要阅读的代码范围。

比如修复一个线上的bug,阅读代码的范围与bug本身密切相关;而如果要理解分布式算法,则需要运行在大量可能运行在不同代码上的节点(进程)上,才能理解其交互原理和工作流程。

这里有一些通用的方法。

先看文档,整体把握

一般来说,文档是高度压缩的代码。一个高质量的开源一般包括教程、规范、API 参考等文档。通过有选择地略读和精读这些文档,可以大致了解项目的整体架构和设计。原则上。

正确的路线是通过文档来理解项目,而是通过阅读代码来验证文档并深入细节,而不是直接通过阅读源代码来理解项目,以便概括。

了解代码组织、文件名、类名

需要看代码的时候,不要从找文件入手,先看代码组织,大致看文件名和类名,每个部分基本都能猜出来。

例如,redis 的源代码组织良好。基本上看文件名就可以快速定位到每条命令的执行位置。

关注问题跟踪代码中的问题

看源码的目的决定了此刻的重点。无论是解决遇到的bug还是学习算法,让我们专注于一个特定的问题,从这个特定的问题追溯代码,而忽略当前需要关注的问题。细节,一步一步,直奔目标。

当然,在解决一个问题时,可能会引发新的问题,尤其是在学习新发现的问题时。

解决问题

如果你没有问题,那就帮助解决别人的问题。一般来说,开源项目有很多需要解决的问题,你可以选择一个入手。

调试

只要可以源代码有什么用,让代码先编译运行,这样添加日志,打印调用栈,或者调试断点都方便很多。

特别是对于像 python 这样的动态类型代码,如果不运行它就很难知道你在做什么。

注释,记笔记

如果源代码的阅读不是一次性的,并且将来可能会被审查和重新阅读,那么您必须进行代码注释和注释。

注释主要是框架图、类图和流程图。目标是创建一个索引以方便将来快速召回。注释是阅读代码的细节,阅读注释(尤其是函数注释)可以在重读时节省大量时间。

以上只是个人总结,请多多指教!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论