通过临摹阅读开源代码
引子
对于阅读开源代码,还会有问题:看不懂、看不进去、太多了看不完。怎么提高效率?
这里,我提供一个我自己摸索出的笨办法。
学画的人,常通过临摹大师作品,来感悟、提升。我的办法,是临摹开源代码。
怎么临摹?概括成一个字:抄。
这可太简单了,Ctrl-C、Ctrl-V,大功告成。或者噼里啪啦一顿敲,就跟金山打字通那样,原文有一个 void func(a, b)
,我也依次敲一个 void func(a, b)
。
不是这样,不过脑子不行。
开卷考试
好比参加一个考试,题目是开发出一个同样的项目,开源代码是你可以开卷参考的。以这个作为你的起点。
敏捷迭代
而你,首先要提取出那个最小的内核,QApplication、后端路由,最小的可执行部分。
在此基础上,一点点添砖加瓦。一开始功能严重补全、严重简化,但它是那个开源项目的雏形。
每一步均可执行
在抄代码时,很容易陷入无脑狂抄,没有意义。
让程序始终保持可执行状态。代码中有些深层含义,只有跑起来你才能看懂。
阻力
源代码按照网状结构组织,一个功能总是依赖于其它功能,形成无数个先有鸡还是先有蛋的问题,让人压力很大。
此时需要耐心,先从创建空类、空方法开始。
这个过程很容易导致无法执行,这是考验智慧的地方。自己知道发力点在哪里,即着重临摹的功能是可运行,其它的空类先参与织网的过程,暂无实际功能。
这样,当发力点完成后,变成了我们的立足之地,变沿着脉络前行,逐个攻克空类、空方法。
视项目的规模,这个过程可能相当漫长,要有足够耐心。
在这种阻力环境下,将对源码嚼烂、嚼碎,吸收到根本的营养。成长的速度也会比其它方法要快。
趋近
在这一过程中,开源项目的代码,一点点开始流淌进你自己的血液中。
改造
对于有些设计,你有自己的见解,对于有些功能,你有自己的创意。
重构它,按照你想的来。
坚持
临摹一个维护多年的项目,工作量是十分巨大的。以半年或一年,甚至数年来记。
急功近利者的噩梦。忘记进度,忘记完成日,沉浸其中。
临界点
某一刻开始,你开始觉悟了。有了如数家珍的感觉,你已熟悉这张地图,可以自在穿行。
心中有自信涌现,变得正反馈。
创造性 & 停不下来
临摹无法割舍,你的版本,将按照你的意愿演化下去。
融为一体
这份开源代码,最终作为血肉,增进到你的肌体。潜移默化,在各种意想不到的地方,发挥作用。
感恩
吃水不忘挖井人,一切皆需感谢开源者的伟大奉献。
对任何项目来说,资深者都是不可多得的,要回馈,帮助原项目越来越好。
本文作者:Maeiee
本文链接:通过临摹阅读开源代码
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!