如何显著地提升本身的编程能力?

给亲推荐Changelog Media的主编和合伙人Jerod Santo写的一篇文。这篇文他分享了如何能提高编程能力的方法,但愿对你有所帮助。git

如下为文章全文:程序员

正如每一个人都知道的那样,写更多的代码是提升编程能力最显著方法。可是我所确信的另一种能够提升编程能力的方法是与写代码彻底相反的。我将要尽量清楚的陈述这种方法。github

只有大量的阅读别人的代码才能显著的提升你本身的编程能力。web

不论你是否相信,可是我以为你能够试一下,你会以为本身所花的时间是彻底值得的。编程

在这篇文章里我将会教你如何选择阅读的内容以及教会你如何阅读。若是你已经知道如何阅读代码,或许你已经发现经过你的努力能够获取更多。若是你还不知道如何很好的阅读代码,那么请必定继续往下看。架构

读什么app

咱们很难决定阅读什么样的代码,也很难给别人建议。我不会简单的给你指出你应该读什么样的代码,由于它最终仍是取决于你喜欢读什么。我会给你提供一些参考,使得你可以有所侧重的去选择阅读什么代码。框架

阅读你信赖的代码ide

你已经在使用的插件或者库会是很好的选择。学习

  • 一个你十分喜欢的WordPress plugin
  • 一个你已经发现颇有用处的Ruby gem
  • 一个你会常常回顾的jQuery plugin

这些都是极其不错的能够做为候选的地方。若是你已经对其公开的APIs十分的熟悉,那么理解其内在的工做原理已经再也不是一件困难的事情。另外,做为一个代码的使用者,你有机会为其添加文件,实现一个新的功能,或者对原来的项目提出修改的建议。

阅读那些可以让你眼前一亮的代码

我还记得第一次看 280 Slides 的时候就心想这些代码让我眼前一亮。随后我迅速发现这个网站的源代码是Cappuccino的开源项目。当这一信息在个人大脑深处徘徊的时候我猛然想起另一个让我印象深入的软件也是运行在Cappuccino上的,这时候我知道了有一个我能够学习到不少东西的项目了。有什么是让你最近印象深入的?它是一个开源项目吗?若是是的话,那么它将会是一个值得你去读的代码,由于这些代码会像最终的应用同样吸引你。

读那些你认为是大牛所写的代码

若是你已经用开源项目的软件编程了一段时间,

那么确定有发现其余可以让你印象深入的程序员。

个人脑海中有那么几个可以写出让我十分羡慕的代码的程序员。

若是你的印象里尚未这样的开发者,只要你愿意的话是很容易找到一个的。他/她或许在过去已经写了属于如下2个类型中的代码。(一种是你所依赖的,另外一种是令你印象深入的)

读那些你能够意会的代码

若是你敢于冒险的话,那么有可能会考虑深刻研究相似Ruby on Rails, Drupal, 或者 jQuery的大项目。我建议你如今最好不要接触相似的项目,除非你在阅读代码方面已经颇有经验了。

大的项目有不少能够移动的模块,你可能会纠结于不少概念而没法及时学到不少知识。疑惑会使人泄气,在阅读大的项目的过程当中更加容易产生疑惑和泄气的负面情绪。从一个小的项目入手的好处在于整个程序的完整逻辑能够在脑海中浮现。剩下的就是去探索其细节并从中学习。

如何阅读代码

既然你已经选择了一些要读的代码,那么什么是最好的阅读方式呢?我在过去阅读了许多的代码,所以能够给你推荐一些能够最大化投资回报率的方法。

下面请看这张大图

假设你已经在阅读代码方面达到了一个突出的水平了。若是没有,那么建议你去查看项目的网站、使用说明书、文件或是任何除了代码外帮助你理解的内容。

那么,我首先建议的是使本身的脑海里有这个项目清晰的框架。其工做量是基于你所选取的代码库的大小。可是只要是大于一个文件的项目都会消耗必定的时间。

首先对文件的结构加以注释。若是一个编者的文件具备像TextMate同样的可视化视图结构将会极大的帮助这一步骤的完成。譬如这里有一个Twitter Ruby gem的完美概要。

这一步骤的目标是为了让你更加的熟悉代码。找出那些文件包含/须要/加载其余的文件,以及代码主题的位置,是否用过命名空间,或是其余诸如此类的东西。若是你已经了解了大的架构,那么你就能够深刻去关注其细节了。

记录下你所发现的东西

阅读代码应该是一个主动的行为。我鼓励你根据本身的想法增长一些评论,当你理解程序的流程的时候记录下你的假设以及本身的结论。那么刚开始的时候你的评论多是这样的:

当你的理解不断的进步的时候你会减小那些碎片化的评论而且可以增长一些更加有意义或权威的评论,这些评论或许可以对完善原来的项目有所帮助。

使用测试,Luke

希望你选择的项目有测试的套件,若是没有的话你能够彻底跳过这一部分(或者从新选择一个有的项目)。

测试是一个很好的地方可以让你随时阅读别人的代码由于它们记录了这些代码须要实现的功能。一些测试可以提供不少的信息,可是不论写的有多好,你在测试里能够比在执行里更好的发现做者的意图。在你阅读代码的时候尽可能让其测试的套件成功运行。这会让你的开发环境获得合理的配置,也会让你更加自信的去作出一些改变。

执行,调整,再执行

谁说看代码的时候就不能执行代码?只有将一切东西拆解再将其恢复原样才能真正的理解其本质。还记得那些你所经历的测试吗?在失败后,增长一些代码,或者在不破坏的前提下改变其执行的状况。尝试增长一些你以为很酷的小属性,或者在项目范围内增长一些记录,这样你就能够在编写代码的不一样阶段打印输出。这些还仅仅是阅读代码吗?

这是毫无疑问的,可是从这个角度看更像是一段奇妙的经历而不是阅读一篇神秘的小说。这是一件很是好的事情。

冲洗和重复

一旦你阅读完一个代码库,当即选取另一个并重复以前的步骤。你只有阅读足够多的代码,才能提升阅读新的代码的效率。你会发现你的投入产出比在不断的上升而且发现这是一个十分有趣的学习过程。

 

从哪里开始

在个人代码阅读资源中,GitHub是对我影响最大的。在这个网站里,你可以很快找到新项目以及其做者,若是你不使用这个网站那么对你来讲是一个很大的损失。我建议先从GitHub上开始直到你可以找到一个能够学习的项目。记住下面这段话并开始阅读吧。

你是怎么看的?你是把阅读代码当成一种学习的手段吗?你会给别人推荐哪些项目?最近是否阅读过很好的代码?

由于The Wayback Machine的缘故你能够阅读到原来的文章

做者介绍:Jerod Santo是Changelog Media的主编和合伙人。他联合主编了旗舰博客—The Changelog,他领导了全部使得Changelog变得更加酷炫的项目。他也经营着本身的订制软件公司Object Lateral。

相关文章
相关标签/搜索