通过临摹阅读开源代码

引子

如何提升编程水平?阅读开源项目的代码是一种有效方式。

对于阅读开源代码,还会有问题:看不懂、看不进去、太多了看不完。怎么提高效率?

这里,我提供一个我自己摸索出的笨办法。

学画的人,常通过临摹大师作品,来感悟、提升。我的办法,是临摹开源代码。

怎么临摹?概括成一个字:抄。

这可太简单了,Ctrl-C、Ctrl-V,大功告成。或者噼里啪啦一顿敲,就跟金山打字通那样,原文有一个 void func(a, b),我也依次敲一个 void func(a, b)

不是这样,不过脑子不行。

开卷考试

好比参加一个考试,题目是开发出一个同样的项目,开源代码是你可以开卷参考的。以这个作为你的起点。

敏捷迭代

而你,首先要提取出那个最小的内核,QApplication、后端路由,最小的可执行部分。

在此基础上,一点点添砖加瓦。一开始功能严重补全、严重简化,但它是那个开源项目的雏形。

每一步均可执行

在抄代码时,很容易陷入无脑狂抄,没有意义。

让程序始终保持可执行状态。代码中有些深层含义,只有跑起来你才能看懂。

阻力

源代码按照网状结构组织,一个功能总是依赖于其它功能,形成无数个先有鸡还是先有蛋的问题,让人压力很大。

此时需要耐心,先从创建空类、空方法开始。

这个过程很容易导致无法执行,这是考验智慧的地方。自己知道发力点在哪里,即着重临摹的功能是可运行,其它的空类先参与织网的过程,暂无实际功能。

这样,当发力点完成后,变成了我们的立足之地,变沿着脉络前行,逐个攻克空类、空方法。

视项目的规模,这个过程可能相当漫长,要有足够耐心。

在这种阻力环境下,将对源码嚼烂、嚼碎,吸收到根本的营养。成长的速度也会比其它方法要快。

趋近

在这一过程中,开源项目的代码,一点点开始流淌进你自己的血液中。

改造

对于有些设计,你有自己的见解,对于有些功能,你有自己的创意。

重构它,按照你想的来。

坚持

临摹一个维护多年的项目,工作量是十分巨大的。以半年或一年,甚至数年来记。

急功近利者的噩梦。忘记进度,忘记完成日,沉浸其中。

临界点

某一刻开始,你开始觉悟了。有了如数家珍的感觉,你已熟悉这张地图,可以自在穿行。

心中有自信涌现,变得正反馈。

创造性 & 停不下来

临摹无法割舍,你的版本,将按照你的意愿演化下去。

融为一体

这份开源代码,最终作为血肉,增进到你的肌体。潜移默化,在各种意想不到的地方,发挥作用。

感恩

吃水不忘挖井人,一切皆需感谢开源者的伟大奉献。

对任何项目来说,资深者都是不可多得的,要回馈,帮助原项目越来越好。


本文作者:Maeiee

本文链接:通过临摹阅读开源代码

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!