当前位置: 华文星空 > 知识

程序员阅读源码是一种什么心态?源码对编程意义何在?如何才能更好阅读代码?

2015-05-13知识

首先要说明的是,代码不是小说和其它文字作品,代码不能「读」。我们平时所谓的「读」代码其实是 explore 或者 decypher。

所以读代码有很强的目的性,也需要有很多先决条件。第一个先决条件是知道这个 code base 的用途和用法。然后要了解工作的基本原理。最好还要有 high-level design 的文档。

目的性可以有两种:第一是扩展 code base 增加原本没有的功能。这个分为以下几步:

  1. 首先要假想系统是如何工作的。这种假象要着重在为什么所需的功能现在没有提供,如果实现的话大体难度是什么。
  2. 阅读代码部分验证或者推翻原来的想法。这种阅读要结合 debugging。
  3. 建立新的假想,重复第二步。
  4. 如果假想与所看的 code 基本吻合,尝试修改 code。
  5. 测试。如果测试不能通过,退回到第四部甚至第二部。

第二种是验证某些想法。这种阅读是上面过程的第 1-3 步。这种过程中的假想可能是一个归谬的假象——也就是说,根据系统的 high-level design,推断出某个功能无法实现,但是现实中的 code base 提供了这个功能。需要通过 explore code 来解释假想为什么是错误的。

总之,代码是不可能像小说那样去「读」的。在 explore 之前就必须做好足够的功课。我阅读代码从来不会在没有「假想」的情况下无目的的瞎看。Explore 代码和物理实验有类似之处,没有经过设计的实验时没有收获的。