全网推广(营销型网站建设与快速建站、网站优化与推广、软文营销与...
学有趣炫酷的IT专业 让未来充满与众不同
学计算机是学什么? 学组装?学维修?学拉网线? 是学王者荣耀开发...
新春活动页
打工族工厂上班族流水线工人未来出路在哪里?
初中毕业也能成为高薪技术人才(人物背景要用初高中学生的) 深圳北大...
学历低、没经验,没技术 初中生做什么工作赚钱? 期望:福利好,环...
北大青鸟成立15年,一路走来有你陪伴。感谢选择北大青鸟的学员,以...
编者按:本文最初是在2010年5月为Fuel Your Coding撰写的,然而该网站现已关闭,为了能让更多人读到,我重新发布了本文。我曾想过针对技术的最新发展对本文进行更新,但原有内容其实已经很棒了。有些内容由于过时显得有些好笑,不过总的来说还行。请慢用!
增进编程能力最明显的方式就是尽可能编写更多代码,这一点大家都清楚。然而我保证还可以通过另一种与写代码完全“背道而驰”的方式增进你的编程能力。下文将尽可能清楚地介绍这种方法:
如果希望大幅增进自己的编程技能,你还需要阅读别人写的代码。
信不信在你。其实你应该相信。如果愿意一试,我相信你会觉得这么做所付出的宝贵时间是非常值得的。
本文将帮你选择可供阅读的代码,并介绍最佳阅读“姿势”。如果已经习惯于阅读别人的代码,你可能已经总结出其他更适合自己的方法。但如果还没这么做过,那就抓紧时间开始阅读吧。
读什么
这个问题很重要,也很难给出具体建议。我并不会按照自己的想法直接给出建议你去阅读的代码,因为这完全取决于你的具体情况。我会提供一些指导,帮你选择适合自己阅读的内容。
阅读你所依赖的代码
首先可以读一读你目前正在使用的任何插件或库的代码,例如:
某个你非常喜欢的WordPress插件的代码
某个你觉得很有用的Ruby gem的代码
某个你经常用到的jQuery插件的代码
这些东西都很适合阅读。你已经非常熟悉它们的公开API,因此理解其内部工作原理的障碍会显得小很多。此外作为这些代码的用户,你还可以借机为其贡献文档,实现新的功能,或通过其他某种方式回报相关的项目。
阅读让你印象深刻的代码
还记得当我第一次看到 280 Slides 后产生的想法:“这真是让人印象深刻。”很快我发现驱动这个网站的代码来自一个开源的Cappuccino项目。我将这一发现深藏在脑海中,最后当我开始参与使用 Cappuccino 构建的 另一个让人印象深刻的应用 时,我知道这个项目可以从中获益匪浅。最近有什么东西让你印象深刻吗?是否是开源的?如果是,那么也许很值得一读,因为代码本身可能会像应用程序一样让你留下深刻的印象。
阅读你所敬重的人写的代码
如果从事开源软件的开发有一段时间了,你也许已经有了几个自己敬重的程序员。我脑海中就时常浮现着几个程序员,他们写的代码堪称惊艳。
就算暂时想不到这样的人,其实这样的人也很好找。例如上文提到的两类代码(你所依赖的代码,让你印象深刻的代码)的作者就是不错的候选人。
阅读你可以完全领会的代码
如果是那种有冒险精神的人,你可能会考虑读读诸如Ruby on Rails、Drupal,或jQuery等大型项目的代码。我个人建议一开始尽量别选择这种项目,除非你本身已经是非常有经验的代码阅读者。
大型项目往往包含很多组件,最终你可能会过度地纠结于从各种现成的成果中学到知识这一概念本身。困惑往往会导致挫折,大型项目通常更容易让人困惑,进而让你的阅读积极性受挫。选择一个小型项目来阅读,这种做法的优势在于你可以在自己的脑海中全盘掌握整个项目的逻辑,进而只需要发现各种细节并从中学习就行了。
如何读
选好要阅读的代码后,最佳阅读方式是什么?我平时阅读过很多代码,可以提供几个能帮你获得最大化收益的方法。
从大局着眼
假设你至少已经能在宏观层面了解自己要阅读的代码所实现的功能。如果还不了解,建议阅读项目的网站、教程、文档,以及除了代码本身之外,其他任何能让你对整个项目获得更深入了解的东西。
厘清这件事之后,建议首先全局了解整个项目的结构。取决于所选项目代码基的规模,具体的工作量可能各异,但任何超过一个文件的项目可能都需要花费略多一些的时间。
首先需要注意文件结构,为此可以选择可以体现文件夹层次结构的编辑器,如TextMate。例如Twitter Ruby gem的结构是这样的。
这一步的目标在于熟悉源代码本身。确定哪些文件包含/需要/加载了其他文件,大部分代码在哪个文件中,是否使用了任何名称空间,以及其他一些本质特征。获得了宏观的了解后,可以开始深入细节了。
记录你的发现和结论
代码的阅读不应该是一种被动行为。建议你能在阅读的同时添加自己的备注,随着对程序流程的理解逐渐深入,记录你的猜测和结论。一开始你的备注可能是类似这样的:
# 我觉得这个函数需要在'initialize'之后调用
# 这个公式是做什么用的?
# 可以确定在17行之后这个函数失去范围了
随着理解的深入,也许可以陆续删除一开始留下的浅显的备注,并开始写一些更有意义、更权威,甚至能对整个项目产生真正回报的备注。
一定要测试
希望你所选择的项目提供了测试套件。如果没有,那么本节内容可以全部跳过(或者找个提供测试套件的项目)。
阅读其他人写的代码时,测试是一种很好的起点,因为其中记录了不同代码本应实现的功能。一些测试可能包含更翔实的信息,但无论测试写得多好通常你都会发现,从测试中了解到的程序员的意图往往要比你自己从具体实现中的判断简单很多。在阅读的同时,可以试着让测试套件成功运行,这样可以确保你的开发环境已正确配置,进而让自己进行各种改动的时候更自信。
执行,修改,执行
谁说读代码就只是“读”代码?如果能将一切拆解又重新组装起来,才能获得真正的理解。还记得做过的各种测试吗?让测试失败几次,增加一些内容,或在不产生破坏作用的情况下试着更改具体实现。试着增添一些你觉得酷的小功能,或者配置项目级的日志并将不同阶段的代码打印输出。这也算“读”?当然!不过此时更像是自己身临其境的历险,而不仅仅是阅读别人写好的推理小说。这是一种很棒的做法!
周而复始的重复
读完一个代码基后,挑选一个新的再次开始这一串过程吧。读的代码越多,阅读的收获就越多,获得这些收获所需付出的时间则会越少。我认为你会发现自己在时间方面的投资回报会飞速增加,并且整个学习过程会编程更愉悦的体验。
2016年4月1日,北大青鸟东莞金码学校的老师们参加了嘉华教育集团组织的茶溪谷一日游。在风景优美的东部华侨城茶溪谷,老师们不仅进行了团队
北大青鸟东莞金码学校第十届校友会在报告厅顺利举行,本次校友会主题为为职场加点‘料’,出席本次校友会的嘉宾有:安卓主管方老师
北大青鸟东莞金码每年都会举办文化艺术节,以各种活动形式贯穿其中,让学员感受到浓浓的文化艺术氛围,并亲自参与到文化节的活动中来,也是
北大青鸟东莞金码学校不定期组织学员开展精彩的文娱活动,通过K歌比赛、晚会节目表演、艺术节活动,以及平时的文娱表演,让学员可以通过各种活动展现自
北大青鸟东莞金码经常组织各种形式的学术活动,包括辩论赛、编程大赛、PPT比赛、知识竞赛、学术讲座、程序开发比赛等等。让学员通过参与各
很多学生求职难,不是因为素质不好、能力不行、经验不够被刷掉,而是因为简历不够闪!找出写简历的突破口、切入点,才能在HR的筛选过程中脱
1、用很怪异的邮箱名字发送简历例如司机投递简历时名字是没油了或迷路了,年轻人投简历用什么彻夜跳舞、狂欢这类的文字,或者带脏字,等等
一些职业限制因素是我们无法掌控的。新产品发布有可能被经济不景气拖累,你的导师在公司重组中失业,你必须在高层另找个新的获胜者作为导师
大学毕业找工作,你选择了哪个城市作为自己职业生涯的出发点?最近正值毕业求职季,前程无忧论坛(bbs 51job com)用这个话题带网友们回忆了往
最近好多人都在问,面临暑期实习,应该去大公司还是小公司?原以为现在公司名气大平台高,但是入职后发现各种问题,好坏公司如何
有了这些法宝,妈妈以后再也不用担心我加班了~一、产品狗、运营猫的数据处理中心1 infogr am infogr am是一个强大的数据可视化图表创作
预 备测试环境: AMD 毒龙1 4G OC 1 5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1 4 1+Eclipse 2 1+Resin 2 1 8,
1 字符基础1 1 单字节字符集(single-byte character set(SBCS))顾名思义,在这种模式下,所有的字符都只用一个字节表示,常见的如,ASC
众所周知,新站一般排名稳定的时间大概在3个月左右,所以seo教程以新站上线三个月的时间来阐述下外链思想,以及如何发外链来让关键词更早的...
DDoS带来的破坏是巨大的,你无法阻止黑客对你的网站发动DDoS攻击,除非主动断开Internet连接。如果我们无法防止这种攻击,那么,怎样做才能最大限度地保护我们的企业网络呢?
横沥镇北大青鸟:打工多年想学技术学什么有前途?来自东莞横沥镇的孟小冬走进东莞北大青鸟校区,讲起了他在东莞横沥打工的经历,从18岁就来
初中毕业学啥技术好?在东莞,很多工厂的工人们都只有初中学历,但是他们仍然有一颗敢于奋斗的心,他们期望通过自己的努力为自己赢得精彩的
春节过后是招聘旺季,对于东莞北大青鸟毕业学生来说,这样的机遇必须好好把握。
一年一度的灾难片来袭,因为要开学啦!同学们,暑假作业完成没,摸底考试又要来了,是不是感到又彷徨,又紧张?如果说假期是为了放松和调整
时光犹如停留在半年前,我不知道该怎么形容我现在的心情,因为一切都太出乎我的意料了,当初还在犹豫北大青鸟学校学费的时候,还在犹豫北大
女生高考落榜怎么办?在2016年的今天,上大学已经不再是改变命运的唯一方式,读职业培训学校也是一种出路。上职业教育,可以学到一门专业技
众所周知,随着互联网日新月异的发展,随着网络的科技发达,电脑的应用成了我们生活中不可的一件物品了,经常在一些贴吧论坛上看到很多人提出这样的问题,“本人已经成年了,还可以再学习电脑吗?”“电脑学起来难度大吗?”“现在学习会不会太晚了”等一系列的问题,其实,成人学习电脑并不算太晚,关键看你选择什么成人电脑培训班!
1 只在电脑上练习如果面试官要考核你的技术,很有可能会要求你在白板上写代码,而不是电脑上。所以,你就不能只在电脑上练习。电脑上的编译
高考落榜读大专还是学技术好呢?不少人会有这样的疑问。就小编看来,如今大学升学率高达90%,高考落榜的学生,通过一些渠道也有大学上。人
“To be,ornot to be:thatis thequestion”(生存还是毁灭:这是一个问题),这是著名的莎士比亚悲剧《哈姆雷特》中的主人公一句非常经典的独白,也是数百年来经常困扰人们的选择问题。这段哈姆雷特式问题的台词,经常用来形容一个人在犹豫在思考时候的两难情况,用现代人的说法就是“选择困难症”。人们经常纠结于各种选择,生怕选错了,就会陷入“蓝瘦香菇”的困境。