只有大量的阅读别人的代码才能显著的提高你自己的编程能力。
不论你是否相信,但是我觉得你可以试一下,你会觉得自己所花的时间是完全值得的。
在这篇文章里我将会教你如何选择阅读的内容以及教会你如何阅读。如果你已经知道如何阅读代码,或许你已经发现通过你的努力可以获取更多。如果你还不知道如何很好的阅读代码,那么请一定继续往下看。
读什么
我们很难决定阅读什么样的代码,也很难给别人建议。我不会简单的给你指出你应该读什么样的代码,因为它最终还是取决于你喜欢读什么。我会给你提供一些参考,使得你能够有所侧重的去选择阅读什么代码。
阅读你信赖的代码
你已经在使用的插件或者库会是很好的选择。
阅读那些能够让你眼前一亮的代码
读那些你认为是大牛所写的代码
如果你已经用开源项目的软件编程了一段时间,
那么肯定有发现其他能够让你印象深刻的程序员。
我的脑海中有那么几个能够写出让我十分羡慕的代码的程序员。
读那些你可以意会的代码
大的项目有很多可以移动的模块,你可能会纠结于很多概念而无法及时学到很多知识。疑惑会令人泄气,在阅读大的项目的过程中更加容易产生疑惑和泄气的负面情绪。从一个小的项目入手的好处在于整个程序的完整逻辑可以在脑海中浮现。剩下的就是去探索其细节并从中学习。
如何阅读代码
既然你已经选择了一些要读的代码,那么什么是最好的阅读方式呢?我在过去阅读了许多的代码,因此可以给你推荐一些可以最大化投资回报率的方法。
下面请看这张大图
假设你已经在阅读代码方面达到了一个突出的水平了。如果没有,那么建议你去查看项目的网站、使用说明书、文件或是任何除了代码外帮助你理解的内容。
那么,我首先建议的是使自己的脑海里有这个项目清晰的框架。其工作量是基于你所选取的代码库的大小。但是只要是大于一个文件的项目都会消耗一定的时间。
记录下你所发现的东西
阅读代码应该是一个主动的行为。我鼓励你根据自己的想法增加一些评论,当你理解程序的流程的时候记录下你的假设以及自己的结论。那么刚开始的时候你的评论可能是这样的:
当你的理解不断的进步的时候你会减少那些碎片化的评论并且能够增加一些更加有意义或权威的评论,这些评论或许能够对完善原来的项目有所帮助。
使用测试,Luke
但愿你选择的项目有测试的套件,如果没有的话你可以完全跳过这一部分(或者重新选择一个有的项目)。
测试是一个很好的地方能够让你随时阅读别人的代码因为它们记录了这些代码需要实现的功能。一些测试能够提供很多的信息,但是不论写的有多好,你在测试里可以比在执行里更好的发现作者的意图。在你阅读代码的时候尽量让其测试的套件成功运行。这会让你的开发环境得到合理的配置,也会让你更加自信的去做出一些改变。
执行,调整,再执行
谁说看代码的时候就不能执行代码?只有将一切东西拆解再将其恢复原样才能真正的理解其本质。还记得那些你所经历的测试吗?在失败后,增加一些代码,或者在不破坏的前提下改变其执行的情况。尝试增加一些你觉得很酷的小属性,或者在项目范围内增加一些记录,这样你就可以在编写代码的不同阶段打印输出。这些还仅仅是阅读代码吗?
这是毫无疑问的,但是从这个角度看更像是一段奇妙的经历而不是阅读一篇神秘的小说。这是一件非常好的事情。
冲洗和重复
一旦你阅读完一个代码库,立即选取另外一个并重复之前的步骤。你只有阅读足够多的代码,才能提高阅读新的代码的效率。你会发现你的投入产出比在不断的上升并且发现这是一个十分有趣的学习过程。
从哪里开始
你是怎么看的?你是把阅读代码当成一种学习的手段吗?你会给别人推荐哪些项目?最近是否阅读过很好的代码?
本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。
文章原标题《One Sure-Fire Way to Improve Your Coding》,作者:Jerod Santo