zoukankan      html  css  js  c++  java
  • 程序员提高编程能力万无一失的办法

    那就是去读别人写的代码。读那些你常用的库、编程框架的源代码,读那些你景仰的大牛的源代码,读代码里的测试(测试本身就是一种有效的文档);读代码、改代码、运行代码。

    其实,所谓写程序,大部分的时间都是花在读代码上,“写”的部分耗时极少;所以把“读”的技能训练好了,是很有好处的。

    提高编程能力万无一失的办法

    编注:这篇文章最初于 2010 年 5 月为 Fuel Your Coding 网站而写。不幸的是,那个网站已经不复存在了,所以我将这篇文章重新发布。为了紧跟时代步伐,我想过对其进行更新,但我又觉得这篇文章经得起时间考验。经不起时间考验的内容是有些可笑的,不管怎样,尽情享受吧。

    ——-

    每个人都知道,提高编程能力的显著方法是写更多代码。然而,我保证能够提高编程能力的另一种方法却不是写代码。我会尽我所能说明这一点:

    如果你想大幅提高自己的编程能力,你需要阅读别人的代码。

    不管你以前是不是这样想的,现在你应该接受这个观点。如果你愿意尝试一下,那么你将会收获颇丰。

    在这篇文章中,我会帮助你选择阅读哪些代码并且给出如何阅读代码的实用建议。如果你已经是一个代码阅读者,你可能已经找到了一些有效的方法,否则,我觉得你应该开始阅读代码。

    阅读哪些代码

    这是一个重大的决定,也是一个很难提出建议的决定。由于阅读什么代码归根结底与你的工作有关,所以我不会简单的指出我认为你应该读的具体代码。然而,我将会提供给你一些阅读代码的参考。

    阅读你依赖的代码

    阅读使用的插件或库是一个很好的开始。

    一个你真正喜欢的 WordPress 插件
    一个你发现有用的 Ruby gem
    一个你一直使用的 jQuery 插件
    这些都是很好的选择。你已经很熟悉它们的公共 API,这样会降低对内部工作机制的理解障碍。此外,作为代码的使用者,你有机会添加文档、实现新功能或以某种方式为项目贡献代码。

    阅读令你印象深刻的代码

    我记得第一次看到 280 Slides 的情景,当时我告诉自己“这真的令人印象深刻”。我很快了解到它是一个由开源 Cappuccino 项目框架开发的网站,我将它牢记于心,当我再次遇到一个令人印象深刻的 app 也使用 Cappuccino 框架时,我知道我可以从这个项目中学到很多。最近令你印象深刻的是什么?它是开源代码吗?如果是,那么它将是一个很好的选择,因为代码可能会与应用一样令你印象深刻。

    阅读你崇拜的人写的代码

    如果你已经使用开源软件写了一段时间代码,你可能会有一些崇拜的程序员。我能想到几个令人羡慕的代码开发者。

    follow-coders

    如果你没有一个崇拜的开发者,你也可以很容易地找到一个。她/他很可能写了前面两段提到的代码(你依赖的代码、令你印象深刻的代码)。

    阅读你可以理解的代码

    如果你喜欢冒险,你可能会考虑深入理解一个大型项目,如 Ruby on Rails、Drupal、或者 jQuery。我建议你目前避开这样的项目,除非你是一个有经验的代码阅读者。

    大项目包括更多模块,你可能挣扎于纷杂的概念,而没有学到有价值的内容。困惑会使人沮丧,项目越大,越容易产生困惑,从而影响你的阅读。阅读小项目的好处就是你可以很快的了解整个程序的逻辑,这样你就更容易集中精力发现和学习其中的细节。

    如何阅读

    现在你已经选择了要读的代码,那么阅读代码的最佳方式是什么呢?
    我已经读过很多的代码,我可以给出一些最大限度提高投资回报率的阅读方法。

    纵观全局

    我认为你至少要在宏观层面了解你所读的代码。如果不了解,建议你阅读项目网站、教程、文档或者其它除代码以外的任何资料。

    好了,从宏观层面了解代码后,我建议你第一步先了解项目的结构。这项工作的工作量取决于你所选择代码的规模,任何多于一个文件的项目都需要花一点时间。

    首先注意文件结构。这一步可以使用一个有文件夹层次结构视图的编辑器(如 TextMate),比如,这是一个很好的Twitter Ruby gem 总览。
    twitter-folder-structure
    这一步的目标是熟悉源代码。找出哪些文件包含/需要/加载其它文件,大部分代码在哪,使用的命名空间是什么以及这类性质的内容。一旦了解了全局,你就可以准备深入挖掘细节了。

    记录你的发现

    阅读代码不应该是个被动行为。我鼓励你添加注释,当开始了解程序流程时记录你的假设和结论。当你第一次开始写评论时看起来是这样的:

    随着你的深入理解,你可以删除自己的用户评论,写出可以反馈给项目的更有意义、更权威的评论。

    使用测试,Luke(用于方便开发和诊断的第三方工具)

    希望你选择的项目有测试套件。如果没有,你完全可以跳过这一节(或者找一个有的)。

    当你阅读别人的代码时,测试是一个很好的开始,因为它们记录了代码应该实现的功能。有些测试比其他信息更丰富,但是不管写的多好,你经常会发现使用测试比执行代码更容易了解程序员的意图。当你阅读时,试着让测试套件成功运行。这将确保你的开发环境配置正确,并将使你在进行更改时更加自信。

    执行,改变内容,执行

    谁说读代码就不需要动手?一旦你打破一切再将它们重新整合在一起,你才开始真正明白。还记得你做过的那些测试吗?使测试失败,添加一些新功能,或者尝试在不破坏的情况下改变执行。尝试着添加一些你觉得很酷的小功能,或者设置项目范围的日志记录,这样可以在代码各个阶段打印输出。这还是阅读吗?当然,此时更像是自己在冒险,而不是看一本侦探小说。这是一件好事。

    冲洗和重复

    当你读完一个代码库,选择另外一个代码库重新开始这个过程。你读的代码越多、读的越好,完成的时间就越短。我想你会发现投资回报率在飞快的增长,这实际上是一种非常愉快的学习方式。

    从哪儿开始

    对我阅读代码影响最大的是 GitHub。在这个网站上,我们可以很容易的找到新项目和伟大的程序员,如果不好好利用它那将是在为自己帮倒忙。我建议先在 GitHub 网站上阅读代码直到找到自己可以借鉴的项目,然后用 git clone 复制这个项目并开始阅读!

  • 相关阅读:
    Largest Rectangle in Histogram
    Valid Sudoku
    Set Matrix Zeroes
    Unique Paths
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Path Sum II
    Path Sum
    Validate Binary Search Tree
    新手程序员 e
  • 原文地址:https://www.cnblogs.com/bluestorm/p/6403440.html
Copyright © 2011-2022 走看看