正如每个人都知道的那样,写更多的代码是提高编程能力最显著方法。但是我所确信的另外一种可以提高编程能力的方法是与写代码完全相反的。我将要尽可能清楚的陈述这种方法。
只有大量的阅读别人的代码才能显著的提高你自己的编程能力。
不论你是否相信,但是我觉得你可以试一下,你会觉得自己所花的时间是完全值得的。
在这篇文章里我将会教你如何选择阅读的内容以及教会你如何阅读。如果你已经知道如何阅读代码,或许你已经发现通过你的努力可以获取更多。如果你还不知道如何很好的阅读代码,那么请一定继续往下看。
读什么
我们很难决定阅读什么样的代码,也很难给别人建议。我不会简单的给你指出你应该读什么样的代码,因为它最终还是取决于你喜欢读什么。我会给你提供一些参考,使得你能够有所侧重的去选择阅读什么代码。
阅读你信赖的代码
你已经在使用的插件或者库会是很好的选择。
一个你十分喜欢的WordPress plugin
一个你已经发现很有用处的Ruby gem
一个你会经常回顾的jQuery plugin
这些都是极其不错的可以作为候选的地方。如果你已经对其公开的APIs十分的熟悉,那么理解其内在的工作原理已经不再是一件困难的事情。另外,作为一个代码的使用者,你有机会为其添加文件,实现一个新的功能,或者对原来的项目提出修改的建议。
阅读那些能够让你眼前一亮的代码
我还记得第一次看 280 Slides 的时候就心想这些代码让我眼前一亮。随后我迅速发现这个网站的源代码是Cappuccino的开源项目。当这一信息在我的大脑深处徘徊的时候我猛然想起另外一个让我印象深刻的软件也是运行在Cappuccino上的,这时候我知道了有一个我可以学习到很多东西的项目了。有什么是让你最近印象深刻的?它是一个开源项目吗?如果是的话,那么它将会是一个值得你去读的代码,因为这些代码会像最终的应用一样吸引你。
读那些你认为是大牛所写的代码
如果你已经用开源项目的软件编程了一段时间,
那么肯定有发现其他能够让你印象深刻的程序员。
我的脑海中有那么几个能够写出让我十分羡慕的代码的程序员。
如果你的印象里还没有这样的开发者,只要你愿意的话是很容易找到一个的。他/她或许在过去已经写了属于以下2个类型中的代码。(一种是你所依赖的,另一种是令你印象深刻的)
读那些你可以意会的代码
如果你勇于冒险的话,那么有可能会考虑深入研究类似Ruby on Rails, Drupal, 或者 jQuery的大项目。我建议你现在最好不要接触类似的项目,除非你在阅读代码方面已经很有经验了。
大的项目有很多可以移动的模块,你可能会纠结于很多概念而无法及时学到很多知识。疑惑会令人泄气,在阅读大的项目的过程中更加容易产生疑惑和泄气的负面情绪。从一个小的项目入手的好处在于整个程序的完整逻辑可以在脑海中浮现。剩下的就是去探索其细节并从中学习。
如何阅读代码
既然你已经选择了一些要读的代码,那么什么是最好的阅读方式呢?我在过去阅读了许多的代码,因此可以给你推荐一些可以最大化投资回报率的方法。
下面请看这张大图
假设你已经在阅读代码方面达到了一个突出的水平了。如果没有,那么建议你去查看项目的网站、使用说明书、文件或是任何除了代码外帮助你理解的内容。
那么,我首先建议的是使自己的脑海里有这个项目清晰的框架。其工作量是基于你所选取的代码库的大小。但是只要是大于一个文件的项目都会消耗一定的时间。
首先对文件的结构加以注释。如果一个编者的文件具有像TextMate一样的可视化视图结构将会极大的帮助这一步骤的完成。譬如这里有一个Twitter Ruby gem的完美概要。
这一步骤的目标是为了让你更加的熟悉代码。找出那些文件包含/需要/加载其他的文件,以及代码主题的位置,是否用过命名空间,或是其他诸如此类的东西。如果你已经了解了大的架构,那么你就可以深入去关注其细节了。
记录下你所发现的东西
阅读代码应该是一个主动的行为。我鼓励你根据自己的想法增加一些评论,当你理解程序的流程的时候记录下你的假设以及自己的结论。那么刚开始的时候你的评论可能是这样的:
当你的理解不断的进步的时候你会减少那些碎片化的评论并且能够增加一些更加有意义或权威的评论,这些评论或许能够对完善原来的项目有所帮助。
最后给喜欢编程的小伙伴发点福利,评论转发+关注,私信我“资料”即可免费领取课程。