如何阅读大型代码库

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章推荐

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

原始链接:Reading Large Codebases 我在“伯乐在线”上的译文链接:http://blog.jobbole.com/51973/   译文: Casey问我: ...

新手阅读大型代码库

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

怎么学习阅读大型项目的代码

第一章: 导论 ++++++++++++ 1.要养成一个习惯, 经常花时间阅读别人编写的高品质代码. 2.要有选择地阅读代码, 同时, 还要有自己的目标. 您是想学习新的模式|编...

怎么学习阅读大型项目的代码

第一章: 导论 ++++++++++++ 1.要养成一个习惯, 经常花时间阅读别人编写的高品质代码. 2.要有选择地阅读代码, 同时, 还要有自己的目标. 您是想学习新的模式|编...

【代码阅读的方法与实践】第6章 应对大型项目

第6章 应对大型项目 我们可以通过浏览项目的源代码树--包含项目源代码的层次目录结构,来分析一个项目的组织方式。源码树常常能够反映出项目在构架和软件过程上的结构。 应用程序的源代码树经常是该应用程序的...

应该如何浏览【大型代码库】的提示和技巧

前言 我相信现在大学中所进行的计算机科学(CS)教育缺乏对学生关于如何在非常大的代码库中查找信息(navigate)以及如何快速地理解代码库的指导。 可能大多数计算机专业(CS)的学生最后...

大型VB医药进销存系统代码

  • 2010-06-14 16:08
  • 12.01MB
  • 下载

收集的网络上大型的开源图像处理软件代码

要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏...
  • dj0379
  • dj0379
  • 2012-05-02 14:06
  • 1066

大型的B2C商务全站代码

  • 2002-12-22 00:00
  • 329MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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