提升编程水平的靠谱方法
杰洛德·桑托 (Jerod Santo) 写于 2016年12月19日
编者按:我原先曾在2010年5月,为“编程加油站”网( Fuel Your Coding )写过这个话题。很不幸,那家网站现已关闭了,所以我重新在本网站发表这篇文章,以飨后来的读者。我原本打算更新些许应时的内容,而今想想保持原样也就足够了。没更新的那些部分也许看上去有些可笑,不过,呵呵,希望您乐在其中!
众所周知,提高编程水平最显著的方法是多写代码。不过,我敢向你保证,提高编程水平的另一种举措,同多写代码完全相反。我将尽我所能,简明扼要地阐述这个问题。
如果你想不断提高编程技巧,你需要阅读他人的代码。不管你信不信,假如你愿意一试,我相信你会收获颇丰。
在本文,我将帮你挑选应该阅读哪些代码,也会给你些如何阅读的实战建议。如果你已经是一位代码阅读者,你通过努力,能找到很多方法让自己获益良多。如果你还不是一位代码阅读者,你绝对必须往下看。
阅读什么
这是个难以给出建议的大议题。我不会简单地指出你该阅读哪些代码,因为很难判断你是归属哪种类型的程序员。但是,我会提供些指南,以便帮你挑选应该阅读哪些代码。
1. 阅读你所依赖的代码
一个主要的着手点是你已经使用的插件程序和库文件。
你喜欢的一个处理 WordPress 插件。
你找到的一款有用的 Ruby gem 。
你打算复用的一段 jQuery 插件。
所有这些都是用来学习的好素材。因为你已经很熟悉这些程序的公开 API 接口,所以你对其内部运行机制理解起来也会比较容易。另外,作为代码使用者,你还可以添个技术文档,实现一些功能,或者进行某些反向工程。
2. 阅读给你印象深刻的代码
记得第一次见到 280 幻灯 ( 280 Slides )网站时,我就暗自思量,“真是令人印象深刻啊。” 我很快意识到,驱动该网站的代码来自于开源项目卡布基诺( Cappucino )。我将这些知识深深地印入脑海。终于,当我偶遇另一个基于卡布基诺运行的应用并为止打动时,我知道我有个可以从中学到很多东西的项目了。最近让你印象深刻的是什么?它是开源的吗?如果答案是肯定的,那就去读吧,因为代码会和应用程序一样给你深刻印象。
3. 阅读你所膜拜的牛人写的代码
如果你已经从事开源软件开发有些时日了,大概会有数个程序员能博得你的敬佩。我认为在我之上有几个高水平的开发者,他们写的代码太令人羡慕了。假如你脑海中尚无某个值得推崇的开发者,现找一位也不是难事。他 / 她可能拥有符合先前两种情况之一的代码(你所依赖的,或者给你印象深刻的)。
4. 阅读那些你真正心领神会的代码
如果你是那种闯劲十足的程序员,你可能会考虑深入诸如 Ruby on Rails 、rupal 或者 jQuery 这类大项目。在你成为一名有经验的代码阅读者之前,我建议你避免参加这样的项目。
大型项目有很多变动的构件,你最终可能纠缠于弄清概念而不是直接价值本身。迷茫会挫伤你的积极性,而你通常会在阅读大型项目代码时感到迷茫和泄气。挑选小型项目的好处在于,你可以立刻在脑海里抓住整个程序的逻辑。如此这般便于你集中思想探究细节,并从中学到东西。
如何阅读
现在你已经挑选了一些代码准备阅读,那么阅读的最佳途径有哪些呢?我已经阅读过大量代码,所以我会提供若干最大化投资回报率的建议。
1. 众览全局
我假设你至少在宏观层面非常了解你已阅读过的代码。如果不是这样,我建议你在阅读代码之前,先通览项目网站,熟读教程、文档以及所有他人提供的资料。好,搞清楚上述问题后,我建议第一步,让项目结构充斥你整个大脑。其工作量的多寡取决于你挑选的基础代码量,不过,挑选一个以上的文件,必会多耗费你些时间。首先,注解文件结构。这步需要使用具有文件夹层次结构视图的编辑器,比如 TextMate 。这里举个例子,推特 Ruby gem 程序概览。本步骤的目标就是熟悉源代码。找出哪个文件 include/require/load 其他文件,大量的代码在哪里,用到的命名空间是什么,诸如此类。一旦你有了整张蓝图,即可转到挖掘细节的工作中去。
2. 记录你的发现
阅读代码不应该是一项被动的工作。随着你开始理解程序流程,我鼓励你边阅读边添加注释,记录下你的设想和总结。你最初的注释看上去可能如下所示:
1 2 3 4 5 |
# 我认为本函数在初始化后调用 # 该表达式用来做什么的? # 第17行后,该变量作用域肯定失效了 |
随着你对代码的深入理解,你可以删除那些给自己看的琐碎浅显的评论,进而换做有意义的、权威性的评论,兴许可以回馈到项目中去。
3. 使用测试
希望你选择的项目拥有测试套件。如果没有,你可以略过本节(或者你另找个带测试套件的项目)。
当你阅读他人代码时,进行各种测试是个不错的起始点。因为这些测试记录了代码会完成哪些程序构想。有些测试比其他测试包含更多信息。但不管代码写得如何棒,你会常常发觉,从测试中了解程序员的意图,比从实现中了解容易得多。阅读代码时,你要尽力成功运行测试套件。这能保证你的开发环境配置正确,从而让你在做某些变更时更有信心。
4. 执行,变更,执行
谁说阅读代码时禁止动手的?你只有能够将整个代码化整为零,而后还能拼装回去,你才算真正开始熟悉这堆代码。还记得你通过的那些测试吗?让程序出错,添加点东西,或者改变实现而不破坏原程序。试着加个你认为很酷的小功能,或者设置整个项目的日志,以便在代码运行的不同阶段得到打印输出。这还仅仅是阅读吗?就这点来说,你绝对选择了远超悬疑小说的冒险历程。多美妙的事情啊!
待你阅读完成一个代码库,再挑个新的,重复上述过程。你阅读得越多,你理解得越透彻,进而你能花更少时间收获更多成果。你会发现,这样做的投资回报率增长相当迅速,这确实是一条快乐无比的学习之路。
从哪里起步
我倚重的代码阅读来源是 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
form: http://mp.weixin.qq.com/s?__biz=MzA5MDA3ODI2Nw==&mid=2649954473&idx=1&sn=da0b7f66d24e62388faa27cf750d3f95&chksm=881695fdbf611ceb66c6b2ff7ddda5dff7826def470b9b79772f34607ac15ff8bcf0f1602019&mpshare=1&scene=23&srcid=0228Fy69zFJ1D2oKHIGm1Uaa%23rd
提升编程水平的靠谱方法相关推荐
- 程序员一般都浏览这些网站,不仅仅提升编程水平!
程序员作为一个经常和互联网打交道的人群,他们喜欢浏览那些网站呢?不爱敲代码的程序猿整理了以下网站供大家参考,排名不分先后: 0. Google https://google.com 这个不用多说了吧. ...
- 简单的一道 SQL 题,谈如何提高编程水平
点击蓝色"有关SQL"关注我哟 加个"星标",天天与12238人一起快乐成长 前两天发了一篇<SQL的3列4种对比方法>,近500 阅读.一个月没更 ...
- 解决不了bug先放着,这里有40条提升编程技能小妙招
选自Medium 作者:Kesk 机器之心编译 参与:魔王 这 40 个小贴士,或许可以帮你提升编程技能. 如何提高编程技能?恐怕很多开发者思考过这个问题.最近,拥有将近 15 年开发经验的软件工程师 ...
- 听说玩这些游戏能提升编程能力?
游戏 == 编程 >>> True 电子游戏和编程充满联系.从雅达利兴盛的年代开始,游戏就已经开始影响一代又一代程序员.他们开发游戏,在游戏过程中获得快乐.随着机器学习的兴起,程序员 ...
- 从一个实例看编程水平的步步提高
很久很久前就想写这个话题的文章了,但是,总是找不到合适的例子.例子简单不足于说明问题,例子复杂可读性就会降低,就会达不到文章的目的.两难总让人激发解决问题的斗志,于是乎自己试着写写这个例子吧.这个例子 ...
- 你做过的最有效的提高你的编程水平的一件事情是什么
最近在 stackexchange 网站上看到了一个非常好的问答,有人问:你做过的最有效的提高你的编程水平的一件事情是什么? 回首作为一个程序员这些年来的生活和职业道路,我使用了很多种不同的方法来提高 ...
- 心态和想法,是提高编程水平的关键
你是否有时候会觉得自己的技术水平停滞不前,想突破但又找不到门路?最近在stackexchange上看到了一个非常好的问答.有人问:你做过的最有效的提高你的编程水平的一件事情是什么? 回首作为一个程序员 ...
- 提高python代码能力_解决不了bug先放着,这里有40条提升编程技能小妙招
点击上方 "Python人工智能技术" 关注,星标或者置顶 22点24分准时推送,第一时间送达 来自:公众号 机器之心 | 编辑:真经君 Python人工智能技术(ID:coder ...
- VS Code竟然能约会,找对象不看脸,看编程水平
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI VS Code现在居然可以用来谈恋爱了. 为了用最硬核的方式找到男(女)朋友,23岁的程序员Ben Awad在VS Code里打造一个约会 ...
最新文章
- Hadoop Pig学习笔记 各种SQL在PIG中实现
- 一个关于Remoting的简单例子
- Elastic全球用户大会Elastic{ON}首次落地北京
- Oracle 怎么开启,关闭归档
- vi下的查找替换命令
- kafka 并发数配置过程中踩到的坑 InstanceAlreadyExistsException Error registering AppInfo mbean
- Quantum Machine Learning——QML学习记录00
- matlab已知热敏电阻数据,Matlab在热敏电阻特性测量实验中的应用
- js跨域问题 ajax跨域问题?
- 服务器光纤存储系统,光纤存储服务器 配置
- 串口通信校验方式(even,odd,space,mark)UART数据波形分析
- CMU 15213:attack实验
- 《Android Studio从入门到精通》读后感,电子书PDF百度网盘下载
- fgetc函数踩过的坑
- DebugView无法显示调试信息问题
- 递归、迭代、分治、回溯、动态规划、贪心算法
- vuejs 配置路由
- lua string
- 数据库之MySQL大全
- PrimeTime PX(Power Analysis) userguide阅读笔记