如何学习我最喜欢的程序的源代码?

时间:2013-07-16 14:50:41

标签: language-agnostic

我已经下载了我最喜欢的程序的源代码。

在学校,他们告诉我们入口点是main.c(pp),然后按照标题,但我意识到并非总是如此。在某些情况下,没有主要或深埋在我能找到的地方。

大多数情况下的文档仅描述了如何编译,需要什么样的代码等等。

最重要的是,你已经下载了代码,解压缩了......现在是什么?

我没有任何特别的例子可以问(帮助),所以如果你有任何例子来帮助我,欢迎

1 个答案:

答案 0 :(得分:4)

阅读代码通常比编写代码更麻烦。此查询没有一个答案,您应该探索多个意见,看看哪个最适合您。你不应该参与的一个练习是从头到尾阅读代码。这将导致眼睛流血和令人头脑麻木的挫败感。因此,不要像书一样接近它,因为将它读成一个封面,覆盖,是非常低效的。阅读学习。应用你所读的是学习。要记住的一个关键点是不要气馁。您将很难找到一个能够快速获取外部大量代码的程序员。

  • 最好的“书速读者”可以浏览他们即将阅读的形象大纲。他们记录了逻辑部分,并描绘了一幅关于期待的细节。当你的大脑以前见过某种东西时,它更有可能与这种材料接触。我会浏览头文件作为形成这个大纲的方法。如果没有头文件,那么尝试通过类接口快速浏览并记下哪些是连接的以及它们的一般用途。

  • 再次浏览您感兴趣的代码部分。尝试识别代码的子系统,并进行第二次更详细的传递。我个人会寻找用于识别子系统的连接组件(查看导入)。记下一些使用的数据结构以及相关的算法和设计模式。在它们之间建立关联,并尝试理解它们的使用原因。

  • 最后,不要仅仅阅读代码。由于您正在寻找开源,因此请挑战自己添加功能。选择您感兴趣的其中一个子系统并添加它。如果这仍然威胁到你,请将最后一颗子弹向前推进一步。制作一个详细说明代码流的快速流程图。打破你最喜欢的IDE并利用你不了解流程的区域周围的断点。尝试让自己置身于设计师的脑海中,并思考为什么他在踩踏断点时做出了一些决定。底线:很容易看到一些东西,并认为你理解它。但是,是真正学习的地方。在添加新功能时,您会发现自己会提出更多问题并对代码进行更多研究。有时需要这个方向。

如果源代码利用OOP解决方案,我强烈建议您学习设计模式书。我打算将设计模式作为子弹包含在内,但我不知道您正在查看的源代码是否使用OOP方法。

希望这有帮助!这是我几年前学习编码时所采用的方法。