當前位置: 華文星空 > 知識

程式設計師閱讀源碼是一種什麽心態?源碼對編程意義何在?如何才能更好閱讀程式碼?

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 程式碼和物理實驗有類似之處,沒有經過設計的實驗時沒有收獲的。