如何阅读大型代码库

转载 2013年12月03日 14:08:45

Casey问我:“对于新手,有什么有针对性的诀窍来阅读大型代码库吗?”

碰巧,我认为这是一个非常好的问题。我觉得想要成为一个优秀的开发者,阅读代码库并弄清清楚内部是怎么回事的能力非常重要。在你的职业生涯中你会中途加入一个现有的项目并被要求迅速融入进去。或者,甚至更难,会有一个项目丢给你让你自己一个人搞清楚。

最坏的情景就是你被带入一个项目,要你替换掉让工程运行失败的“那些肆无忌惮的*杂种”,并且让工程运行起来。不过更常见的情景是你被要求维护一个已经离职的员工写的代码库。最后,当然,如果你用了任何开源的项目,很大的可能是被要求“你可以扩展它让它也能做这个功能吗?”亦或者你只是好奇。

尤其是新手程序员,我强烈建议阅读代码库,看看以下我是怎么做的,然后你需要实际的去阅读代码。

当我接触到新的代码库时,我常常忽略文档和表面的细节。目的是摒弃先入为主的关于它怎么运行的想法。我试图从文件结构上找出项目的结构。仅仅这个就能告诉你很多,我常常试图找出它的结构。这是整个系统的核心吗?它是怎么分割的?等等。

之后我会找到最底层的代码然后开始阅读。我常常用字典序来读。找到一个文件,读完它,然后读下一个文件。我尽量记录下来关于这些东西是如何连接在一起的(你可以在博客里找到关于记笔记的例子),但我做的最多的找到对这个代码的感觉。有很多代码常常是项目风格的一部分,比如预处理检查,日志记录,抓取错误等等。你可以先了解这部分内容,之后就可以忽略它们阅读有趣的部分。

我通常不在某一点上阅读太深,我会试图宏观的找到感觉。比如:这个文件通过调用Y和Z返回了X,但在这个点上阅读每一个细节对我来讲并不真的重要。哦对了,我还记录笔记,很多笔记。往往它们不是真的笔记而更像是问题清单,在这里我理解的越多,加入的问题和写入的回答也就更多。在阅读完我能找到的最底层代码之后,我会做一个纵向的比较。这是最让我能弄清楚事情是如何布局和工作的。这就意味着下一次我来看这部分的时候,对于代码结构我会有更好的想法。

接下来,我会找有意思的部分。系统当中对我有意思的部分而不是被我束之高阁的部分。

这部分内容很多,但其实要做的并不多。我仅仅是通读一遍代码首先找到结构,之后我会认真研读独一无二的部分并找出他们是如何写的。

在这期间,尤其是遇到难点的时候,我会试图寻找任何文档(只要有的话)。对于这一点,我应当首先知道代码是如何组织的,这样我才能更快的阅读文档。

*原作者注:我一开始只写了肆无忌惮,不过这样更有趣。

原文链接: Ayende Rahien   翻译: 伯乐在线 - 孑良
译文链接: http://blog.jobbole.com/51973/
[ 转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]

如何阅读大型代码库?

Casey问我:“对于新手,有什么有针对性的诀窍来阅读大型代码库吗?” 碰巧,我认为这是一个非常好的问题。我觉得想要成为一个优秀的开发者,阅读代码库并弄清清楚内部是怎么回事的能力非常重要。在你的职业...
  • shuhuai007
  • shuhuai007
  • 2013-11-27 15:00:04
  • 676

【译】如何阅读大型代码库

原始链接:Reading Large Codebases 我在“伯乐在线”上的译文链接:http://blog.jobbole.com/51973/   译文: Casey问我: ...
  • matrix1437
  • matrix1437
  • 2013-11-24 13:20:30
  • 913

新手阅读大型代码库

Casey问我:“对于新手,有什么有针对性的诀窍来阅读大型代码库吗?” 碰巧,我认为这是一个非常好的问题。我觉得想要成为一个优秀的开发者,阅读代码库并弄清清楚内部是怎么回事的能力非常重要。在你的...
  • longshenlmj
  • longshenlmj
  • 2013-11-27 16:05:44
  • 851

如何快速阅读一个c++大工程?

1,有没有程序说明文档?有没有详细代码注释,没有就先看找main函数,看执行流程,依次看调用函数代码;2, 多读,万剑归宗,高手思维趋同,寻找“同”,比如设计模式;3,由上至下,逐步求精。理清程序的脉...
  • gang_my_lover
  • gang_my_lover
  • 2018-03-01 13:38:17
  • 61

阅读大型代码库的方法

1.学习编程的最好方法除了写,就是读,读书要读好书,读代码同样如是,一个代码库或者一个项目的文件、代码成千上万,所以选代码库,选择读代码的方法非常重要。 2.现在开源的好项目很多,可以选择自己和自己...
  • a13501426
  • a13501426
  • 2013-11-27 20:15:54
  • 531

如何阅读大型程序

近期想读下程序,但发现非常难。 比如一个网络程序模块,有6个cpp源程序,共5916行源代码,不包括头文件中引用的别的地方的代码。 1、我对业务还算熟悉,但是看到那么多变量定义时还是感到理解起...
  • e_wsq
  • e_wsq
  • 2012-04-11 16:14:38
  • 524

如何阅读源码学习总结

如何阅读一个大型项目代码 对于程序员来说,写代码永远比读代码来的舒服。但现实情况是, 程序员常常需要阅读其他人员写的代码,更多的时候这些代码可能即没 文档也没注释。不过,好象有个人说过一句话...
  • bcbobo21cn
  • bcbobo21cn
  • 2016-09-06 17:52:46
  • 1315

如何快速读懂大型C++程序代码

如何快速读懂大型C++程序代码  (2012-06-14 11:25:03) 标签:  c编程 分类: C 学习 六个章节: ( 1 )...
  • liliemily
  • liliemily
  • 2014-08-01 15:36:27
  • 3630

如何阅读linux c开源项目呢?

如何阅读linux c开源项目呢? 1. 先baidu知道这个玩意是做什么用的;对这个软件产品的功能有了解; 2. 看官方文档关于架构设计的思考,或者网友总结的架构框架;对代码的框架有了解; 3...
  • wuxiulinwuwuxiulin
  • wuxiulinwuwuxiulin
  • 2015-01-21 09:26:12
  • 475

教你一招最屌的阅读开源项目的姿势

相信自从看了我的 GitHub 教程很多人开始爱上了 GitHub,有些人微博也不刷了,知乎也不刷了,改刷 GitHub 了,而且刷的不亦乐乎。这是好事,多接触多了解一些开源项目,对你之后的项目中的开...
  • googdev
  • googdev
  • 2016-10-24 14:54:02
  • 4326
收藏助手
不良信息举报
您举报文章:如何阅读大型代码库
举报原因:
原因补充:

(最多只允许输入30个字)