如何读懂他人的代码.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何读懂他人的代码

一、读懂程序代码,使心法皆为我所用 程序代码是别人写的,只有原作者才真的了解程序代码的用途及涵义。许多程序人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程序代码。但是,与其抗拒接收别人的程序代码,不如彻底了解相关的语言和惯例,当成是培养自我实力的基石。 对大多数的程序人来说,撰写程序代码或许是令人开心的一件事情,但我相信,有更多人视阅读他人所写成的程序代码为畏途。许多人宁可自己重新写过一遍程序代码,也不愿意接收别人的程序代码,进而修正错误、维护它们、甚至加强功能。 这其中的关键究竟在何处呢?若是一语道破,其实也很简单,程序代码是别人写的,只有原作者才真的了解程序代码的用途及涵义。许多程序人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程序代码。这是来自于人类内心深处对于陌生事物的原始恐惧。 读懂别人写的程序代码,让你收获满满 不过,基于许多现实的原因,程序人时常受迫要去接收别人的程序代码。例如,同事离职了,必须接手他遗留下来的工作;也有可能你是刚进部门的菜鸟,而同事经验值够了、升级了,风水轮流转,一代菜鸟换菜鸟。甚至,你的公司所承接的项目,必须接手或是整合客户前一个厂商所遗留下来的系统,你们手上只有那套系统的原始码(运气好时,还有数量不等的文件)。 诸如此类的故事,其实时常在程序人身边或身上持续上演着。许多程序人都将接手他人的程序代码,当做一件悲惨的事情。每个人都不想接手别人所撰写的程序代码,因为不想花时间去探索,宁可将生产力花在产生新的程序代码,而不是耗费在了解这些程序代码上。 很遗憾的是,上述的情况对程序人来说很难避免。我们总是必须碰触到其他人所写成的程序代码,甚至必须了解它、加以修改。对于这项需求,在现今开放原始码的风气如此盛行的今日,正如之前的「程序设计2.0」文中所提到的,你可以透过开放原始码学习到新的技术、学习到高手的架构设计,大幅提高学习的效率及效果。你甚至可以直接自开放原始码项目中抽取、提炼出自己所需的程序代码,站在巨人的肩膀上,直接由彼端获得所需的生产力。从这个观点来看,读懂别人所写的程序代码,就不再只是从负面观点的「被迫接收」,而是极具正面价值的「汲取养份」。 先了解系统架构与行为模式,再细读 倘若撰写程序代码是程序人的重要技艺之一,那么读懂别人的程序代码、接着加以修改,也势必是另一个重要的技艺。 如果你不能熟悉这项工作,不仅在遭逢你所不愿面对的局面时,无法解决眼前接手他人程序代码的难题,更重要的是,当你看着眼前现成的程序代码,却不知如何从中撷取自己所需,导致最后只能入宝山空手回,望之兴叹。 接触他人的程序代码,大致上可以分为三种程度:一、了解,二、修改、扩充,三、抽取、提炼。 了解别人的程序代码是最基础的工作,倘若不能了解自己要处理的程序代码,就甭论修改或扩充,更不可能去芜存菁,从中萃取出自己所需,回收再利用别人所撰写的程序代码。 虽说是「阅读」,但程序代码并不像文章或小说一样,透过这种做法,便能够获得一定程度的了解。阅读文章或小说时,几乎都是循序地阅读,你只消翻开第一页,一行行阅读下去即可。但是,有许多程序人在试着阅读其他人的程序代码时,却往往有不知如何读起的困难。 或许找到系统的第一页(也就是程序代码执行的启始点)并不难,但是复杂度高的系统,有时十分庞大,有时千头万绪。 从程序代码的启始点开始读起,一来要循序读完所有的程序代码旷日费时,二来透过这种方式来了解系统,很难在脑中构建出系统的面貌,进而了解到系统真正的行为。所以,阅读程序代码的重点,不在于读完每一行程序代码,而是在于有效率地透过探索及阅读,从而了解系统的架构及行为模式。以便在你需要了解任何片段的细节实作时,能够很快在脑上对映到具体的程序代码位置,直到那一刻,才是细读的时机。 熟悉沟通语言与惯例用语 不论如何,有些基本的准备,是阅读他人程序代码时必须要有的。 首先,你最好得了解程序代码写成的程序语言。想要读懂法文写成的小说,总不能连法文都不懂吧。有些情况则很特殊。我们虽然不懂该程序代码撰写所用的语言,但是因为现代语言的高阶化,而且流行的程序语言多半都是血统相近,所以即使不那么熟悉,有时也可勉力为之。 除了认识所用语言之外,再来就是要先确认程序代码所用的命名惯例(naming convention)。了解命名惯例很重要,不同的程序人或开发团队,差异可能很大。 这命名惯例涵盖的范围通常包括了变量的名称、函式的名称、类别(如果是面向对象的话)的名称、原始码档案、甚至是项目建构目录的名称。倘若使用了像设计模式之类的方法,这些名称更有一些具体的表述方式。 命名惯例有点像是程序人在程序语言之上,另行建构的一组沟通行话。程序人会透过共通约束、遵守的命名惯例,来表达一些较高阶的概念。例如,有名的匈牙利式命名法,便将变量名称以属

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档