提升编程水平的靠谱方法
杰洛德·桑托 (Jerod Santo) 写于 2016年12月19日
编者按:我原先曾在2010年5月,为“编程加油站”网( Fuel Your Coding )写过这个话题。很不幸,那家网站现已关闭了,所以我重新在本网站发表这篇文章,以飨后来的读者。我原本打算更新些许应时的内容,而今想想保持原样也就足够了。没更新的那些部分也许看上去有些可笑,不过,呵呵,希望您乐在其中!
众所周知,提高编程水平最显著的方法是多写代码。不过,我敢向你保证,提高编程水平的另一种举措,同多写代码完全相反。我将尽我所能,简明扼要地阐述这个问题:
如果你想不断提高编程技巧,你需要阅读他人的代码。
不管你信不信,假如你愿意一试,我相信你会收获颇丰。
在本文,我将帮你挑选应该阅读哪些代码,也会给你些如何阅读的实战建议。如果你已经是一位代码阅读者,你通过努力,能找到很多方法让自己获益良多。如果你还不是一位代码阅读者,你绝对必须往下看。
阅读什么
这是个难以给出建议的大议题。我不会简单地指出你该阅读哪些代码,因为很难判断你是归属哪种类型的程序员。但是,我会提供些指南,以便帮你挑选应该阅读哪些代码。
阅读你所依赖的代码
一个主要的着手点是你已经使用的插件程序和库文件。
- 你喜欢的一个处理 WordPress 插件。
- 你找到的一款有用的 Ruby gem 。
- 你打算复用的一段 jQuery 插件。
所有这些都是用来学习的好素材。因为你已经很熟悉这些程序的公开 API 接口,所以你对其内部运行机制理解起来也会比较容易。另外,作为代码使用者,你还可以添个技术文档,实现一些功能,或者进行某些反向工程。
阅读给你印象深刻的代码
记得第一次见到 280 幻灯 ( 280 Slides )网站时,我就暗自思量,“真是令人印象深刻啊。” 我很快意识到,驱动该网站的代码来自于开源项目卡布基诺( Cappucino )。我将这些知识深深地印入脑海。终于,当我偶遇另一个基于卡布基诺运行的应用并为止打动时,我知道我有个可以从中学到很多东西的项目了。最近让你印象深刻的是什么?它是开源的吗?如果答案是肯定的,那就去读吧,因为代码会和应用程序一样给你深刻印象。
阅读你所膜拜的牛人写的代码
如果你已经从事开源软件开发有些时日了,大概会有数个程序员能博得你的敬佩。我认为在我之上有几个高水平的开发者,他们写的代码太令人羡慕了。假如你脑海中尚无某个值得推崇的开发者,现找一位也不是难事。他 / 她可能拥有符合先前两种情况之一的代码(你所依赖的,或者给你印象深刻的)。
阅读那些你真正心领神会的代码
如果你是那种闯劲十足的程序员,你可能会考虑深入诸如 Ruby on Rails 、rupal 或者 jQuery 这类大项目。在你成为一名有经验的代码阅读者之前,我建议你避免参加这样的项目。
大型项目有很多变动的构件,你最终可能纠缠于弄清概念而不是直接价值本身。迷茫会挫伤你的积极性,而你通常会在阅读大型项目代码时感到迷茫和泄气。挑选小型项目的好处在于,你可以立刻在脑海里抓住整个程序的逻辑。如此这般便于你集中思想探究细节,并从中学到东西。
如何阅读
现在你已经挑选了一些代码准备阅读,那么阅读的最佳途径有哪些呢?我已经阅读过大量代码,所以我会提供若干最大化投资回报率的建议。
众览全局
我假设你至少在宏观层面非常了解你已阅读过的代码。如果不是这样,我建议你在阅读代码之前,先通览项目网站,熟读教程、文档以及所有他人提供的资料。好,搞清楚上述问题后,我建议第一步,让项目结构充斥你整个大脑。其工作量的多寡取决于你挑选的基础代码量,不过,挑选一个以上的文件,必会多耗费你些时间。首先,注解文件结构。这步需要使用具有文件夹层次结构视图的编辑器,比如 TextMate 。这里举个例子,推特 Ruby gem 程序概览。本步骤的目标就是熟悉源代码。找出哪个文件 include/require/load 其他文件,大量的代码在哪里,用到的命名空间是什么,诸如此类。一旦你有了整张蓝图,即可转到挖掘细节的工作中去。
记录你的发现
阅读代码不应该是一项被动的工作。随着你开始理解程序流程,我鼓励你边阅读边添加注释,记录下你的设想和总结。你最初的注释看上去可能如下所示:
# 我认为本函数在初始化后调用 # 该表达式用来做什么的? # 第17行后,该变量作用域肯定失效了
随着你对代码的深入理解,你可以删除那些给自己看的琐碎浅显的评论,进而换做有意义的、权威性的评论,兴许可以回馈到项目中去。
使用测试
希望你选择的项目拥有测试套件。如果没有,你可以略过本节(或者你另找个带测试套件的项目)。
当你阅读他人代码时,进行各种测试是个不错的起始点。因为这些测试记录了代码会完成哪些程序构想。有些测试比其他测试包含更多信息。但不管代码写得如何棒,你会常常发觉,从测试中了解程序员的意图,比从实现中了解容易得多。阅读代码时,你要尽力成功运行测试套件。这能保证你的开发环境配置正确,从而让你在做某些变更时更有信心。
执行,变更,执行
谁说阅读代码时禁止动手的?你只有能够将整个代码化整为零,而后还能拼装回去,你才算真正开始熟悉这堆代码。还记得你通过的那些测试吗?让程序出错,添加点东西,或者改变实现而不破坏原程序。试着加个你认为很酷的小功能,或者设置整个项目的日志,以便在代码运行的不同阶段得到打印输出。这还仅仅是阅读吗?就这点来说,你绝对选择了远超悬疑小说的冒险历程。多美妙的事情啊!
待你阅读完成一个代码库,再挑个新的,重复上述过程。你阅读得越多,你理解得越透彻,进而你能花更少时间收获更多成果。你会发现,这样做的投资回报率增长相当迅速,这确实是一条快乐无比的学习之路。
从哪里起步
我倚重的代码阅读来源是 GitHub 。在该网站里,你很容易找到新的项目和编程大牛,如果你不好好利用它,吃大亏的定是你自己。我建议一开始在 GitHub 上在线阅读代码,直到你发现一个你认为能学到东西的项目。把你找到的小宝贝克隆到你本地再行阅读。
怎么样哥们?你是否将阅读代码作为一件学习工具?你会向别人推荐哪些项目?最近读过什么好的代码吗?
LinuxStory 小编温馨提示:更多信息请访问原文链接。
原文链接:https://changelog.com/posts/one-sure-fire-way-to-improve-your-coding
本文链接:https://linuxstory.org/one-sure-fire-way-to-improve-your-coding
本文由 LinuxStory 翻译整理,若有不妥,欢迎指正。
转载请注明出处,否则必究相关责任!