微信号:jishuqushi

介绍:除了技术干货,这里啥也没有了.

无需大量写代码,用这种方法也一定能提高编程能力

2017-07-24 18:31 Jerod Santo




原文:One Sure-Fire Way to Improve Your Coding 

作者:Jerod Santo 

翻译:技术风向标


这篇文章是我在2010年5月写的,当时发布在Fuel Your Coding网站上。但这个站点现在已经不存在了,考虑到以后可能会有人想查阅此文,所以在这里重新发布。


想提高编程能力,最容易想到的方法就是尽可能多的写代码,差不多谁都知道这个。然而还有一种我认为绝对有效的方法,可以说完全是多写代码这种方式的反面:


阅读别人的代码能明显提升编码能力。 


这话有人信,也有人不信。如果你愿意一试,也许你将得到巨大回报。


本文中我将主要说明应该阅读什么样的代码,同时提出一些可能有用建议。如果你已经是读代码的专家,那么读完此文你可能也会有新的发现。


应该阅读哪些代码


这个问题很重要,也确实很难选择。没人能直接告诉你应该读哪段具体的代码,因为它跟你要做的/感兴趣的东西有关。总的来说,我认为原则是:


阅读那些你用得上的代码


最好从那些你已经在使用的插件或者lib文件开始读:


  • 你很喜欢的WordPress插件;

  • 你觉得很有用的Ruby gem工具包;

  • 你可能会用到的jQuery 插件;

  • ……


这些都是可以从中学习的好例子。因为你已经熟知其公共API,那么进一步了解其内部工作原理就相对容易。此外,作为这些代码的用户,你还有机会给它们添加文档、实现新功能,或者用其它方式为项目做贡献。


阅读令你印象深刻的代码


我还记得第一次看到280 Slides网站时心想:“这太赞了。” 后来知道它的代码就是基于Cappuccino开源项目的。再后来我又碰到另一个令人很好的且同样是基于Cappuccino 的应用时,我从中学到了很多东西。


那么你最近对什么项目感兴趣?它是开源的吗?如果是的话那它就是个很好的阅读选择。


阅读大师的代码



如果你已经开始接触开源世界了,那你可能已经有喜欢/崇拜的程序员高手了。比如我就能想到一些大牛,他们的代码简直令人羡慕。


阅读能为你带来灵感的代码


如果你的性格是冒险型,可以考虑投身一些大型项目,比如Ruby on Rails框架,Drupal或者jQuery。但我还是建议最开始不要接触太大的项目。


大型项目有非常多的组件,可能会因为概念太多而导致无法学到任何有价值的东西。太大的项目可能会让人在读代码过程中感到困惑和气馁。从小项目开始读代码的好处是可以将整个程序逻辑放在脑子里。这样可以更关注细节,从而学得更快更好。


如何阅读


说到这里,你应该已经选定了自己要学习的代码,那么最好的阅读方式是什么呢? 我觉得就是尽量花时间少但收获多:


先看大框架


要在宏观层面上知道你所读的代码是如何实现的。要掌握这个,请先浏览该项目的网站、教程、文档等等。


在这之后的第一步就是先大致浏览项目的架构。


首先,注意文件结构。可以借助一些有文件夹层次结构视图的编辑器,比如TextMate。例下图是Twitter Ruby gem的代码文件结构:



这一步的目标是熟悉源码,掌握大局之后就可以深入挖掘细节了。


记录阅读心得


阅读代码不是一种完全被动的行为。当开始理解程序流时,最好开始为代码添加注释,把你的假设或结论都记下来。刚开始可能会像这样:


随着理解的加深,慢慢的删除一些无关或错误的注释,或者加上理解正确的注释,最后这些注释也可能会提交到项目里呢。


边阅读边测试


你选定的项目最好有测试套件,实在没有就跳过这部分也行。


读别人的代码时,其测试部分是一个很好的着手点,因为它们记录了代码应该实现的功能。一边读代码一边尝试执行测试,这还有助于正确配置你的开发环境。此后你如果要修改代码,熟悉测试也能让你改得更准确自信。


亲自动手做


读代码的时候手不要闲着,把一切打乱再重新拼装起来,这个过程能帮你真正理解这个项目。想办法让测试失败,或者增加测试代码,或者试着修改实现的逻辑,加一个小功能等等。


重复再重复


读完一个代码库之后接着读另一个,重复这个过程。代码读得越多,你花的时间会越来越少,投资回报增长很快。


从哪里入手?


对我影响最大的就是GitHub,在这里很容易找到新项目和优秀程序员。所以我建议先从GitHub开始,请开始git clone吧!


近期文章

 

Chrome 59中 DevTools 的新功能,可查找未使用的JS/CSS代码

入职第一天误删生产库的小哥被开除,谁之过?

《Effective Java》在哪些方面影响了 Kotlin  的设计?

厉害了,NSA!美国国家安全局在GitHub开源了32项内部技术

缩进用空格还是TAB?StackOverflow说空格党薪水更高

码农必备神器:像IDE一样浏览和搜索Github代码的Chrome插件

TIOBE 7 月编程语言排行榜:Go 语言首次进入前十,Java暴跌

Windows 10惊现尴尬Bug, 24核竟卡成蜗牛



 
技术风向标 更多文章 Windows 10惊现尴尬Bug, 24核竟卡成蜗牛 Chrome 59中 DevTools 的新功能,可查找未使用的JS\/CSS代码 TIOBE 7 月编程语言排行榜:Go 语言首次进入前十,Java暴跌 如何掌握所有的程序语言 Linux Kernel 4.12 发布,Linus 说是史上较大版本之一,比你想的还大
猜您喜欢 perl黑魔法15—解析JSON算法剖析 Swift学习资料汇总 【设计谈】图标 围炉夜话|信息安全与儿歌三百首 ✎_一辈子只跟媳妇做的事情,(媳妇你辛苦了)