互联网技术 · 2024年2月2日

如何寻找适合个人阅读的代码源

看到「为什么我们要阅读源码?」文章写的非常不错,所以就转载了。有些同学可能看的一脸懵逼,其实这很正常,这篇文章写的都是理论和方法,缺少源码阅读的实践。只有在你源码阅读达到一定的量以后,你才会真正明白这篇文章是对阅读源码很好的归纳和总结。

我这里把这篇文章精简一下,稍微帮助大家回顾一下重点,然后扩展一下思路,讲解一下如何找到适合自己阅读的源码。

一、为什么要阅读源码,why?

学会基础的语法和试验了若干 example 后,我们就火箭般蹿到了自己写代码打怪赞经验的阶段。这样略过大量阅读代码的阶段有三个害处。

  • 写代码的基础是不牢靠的,打怪升级的过程也是最慢的。道理很简单 —— 前辈们踩过的坑,总结的经验教训,你都不得不亲自用最慢的法子一点点试着踩一遍。
  • 很容易养成 stackoverflow driven 的写代码习惯 —— 遇到不知如何写的代码,从网上找现成的答案,找个高票的复制粘贴改吧改吧,凑活着完成功能再说。写代码的过程中遇到问题,开启调试模式,要么设置无数断点一步步跟踪,要么到处打印信息试图为满是窟窿的代码打上补丁,导致整个写代码的过程是一部调代码的血泪史。
  • 你周围最强的那个工程师的开发水平的上限就是你的上限。

二、如何阅读源码,how?

读书一般分不同的场景:想要让自己明智,读史;想要让自己灵秀,读诗;想要让自己周密,研习数学;想要让自己深刻,攻读哲学等;同样的道理,代码的阅读也分不同的场景,不同场景下的阅读方法自然不同。

  • 为了破案而阅读代码;专注,集中力量攻击且仅攻击一点是这样场景下阅读代码的主要方式。
  • 为了明理而阅读代码;经验值增长太慢,要想涨快点怎么办?主动出击啊!计算机领域的很多算法,基础知识,理论,在看过书,读过文章后我们都似懂非懂,这时,阅读代码就是最快地巩固和加深理解的方式。
  • 为了能级跃迁而阅读代码;打破平台期,成就能级跃迁,你需要吸收合适的「光子」。这光子可以是一个开天辟地的项目(比如说 Google 的 Google Map,docker 的 docker,阿里的淘宝等),可是这样的机会并非总能被你我赶上,大多数人都是在日复一日地做些并不起眼的,只能缓缓升级的小活,这时候,与其默默沉沦,不如学庄子口中的北冥之鱼那样,沉潜浮动,积蓄能量,等待下一次抟扶摇而上九万里。这种积蓄能量为跃迁准备的一种方式是读代码。读什么?读那些基础地不能再基础,你认为自己一辈子都不会去写的那些代码。比如 linux kernel,比如 OTP。

三、如何找到适合自己阅读的源码?

明白阅读源码的重要性以及方法后,重要的就是实践,阅读期间必然会遇到各种困难,尤其是没有人一起探讨时,更容易放弃,开发者圆桌会整理一系列关于阅读源码的实践文章与大家一起阅读、探讨、总结,坚持源码阅读,坚持更高级的进步。

要阅读源码自然要获取源代码才行,我们去哪里找到适合自己阅读的源码呢?开源组织或平台是一个不错的选择,这些组织或平台管理着大量的源码资源和说明文档,对我们阅读源码是非常宝贵的资源。下面列举几个比较知名的源码平台:

1. GitHub

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。

GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、Python 等。

2. Apache

软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为运作一个开源软件项目的Apache 的团体提供支持的非盈利性组织,这个开源软件的项目就是 Apache 项目。

3. 基础库

各编程语言的基础库,比如Java语言的JDK就是一个非常不错的源码库,可以学到很多大师级的代码实现逻辑和写法。

短时间内,可能无法确定自己应该阅读哪些源码,我觉得可以从以下三个方面着手考虑:

  • 工作相关的;阅读与自己工作相关的源码,可以在实际工作中学以致用。
  • 感兴趣的;兴趣是最好的老师,可以推动你探索更多的未知源码世界。
  • 职业规划相关的;根据自身职业发展规划阅读相应的源码,比如要成为架构师、技术总监那么就需要阅读与该职业相关的源码和文档资源。

【本文为51CTO专栏作者“朱国立”的原创稿件,转载请通过作者微信公众号“开发者圆桌”获取联系和授权】

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册