關於代碼學習的一些看法

原文地址:http://game-lab.org/?p=83

代碼的三中類型

  1. Product:產品代碼,一個可用的產品代碼。比如一些開源軟件,還有當前工作整天面對的代碼。
  2. lib:庫代碼,對某一種功能封裝的模塊,一個工具庫。
  3. framework:框架代碼,某種業務常用邏輯的封裝,就形成改業務邏輯的框架庫。比如,遊戲客戶端來說就是遊戲引擎,MFC是window下的一個GUI框架,等等。

三種代碼的編寫與設計,抽象層次依次遞增,對編寫者能力的要求也依次遞增。

代碼發佈的內容

無論是作爲產品、庫、還是框架,代碼發佈的形式一般都有下面的內容:

  1. Source Code:源碼
  2. Product/Example/Demo:產品/示例/演示
  3. Test:對源碼的全面單元測試(現在項目的產品代碼幾乎是沒有的,質量無法保證,只能靠功能測試)
  4. Docs:分析/設計/代碼/測試 文檔。方便後來者學習。

代碼開發流程

開發的正向流程:

分析 -> 設計 -> 編碼 -> 測試

每一步的成果:

  • 分析:分析文檔(需求分析,可行性分析,等)
  • 設計:整個架構設計文檔
  • 編碼:程序接口文檔 + 源碼
  • 測試:測試用例等

最終成果:Source Code

如何學習代碼:

理解程度:
  • ★        知其然。知道是幹什麼用的,有什麼優缺點。對多數代碼的理解都應該在該層次,以後做東西時候,可以權衡使用那個代碼,並且作出合理選擇,然後再進一步學習。這樣,可以瞭解許多新技術。
  • ★★      可以熟練使用,但不知其所以然。對經常使用的代碼,達到這個程度就可以了。
  • ★★★    知其然,並且知其所以然。不但要知道是幹什麼的,會熟練的使用,還要知道來龍去脈,整個代碼的架構設計,都要瞭如指掌。非常感興趣,或着非常重要的代碼,可以進入深入的分析。加深理解。學習代碼的封裝技巧和架構。

根據理解程度的不同,方法肯定不同了:

  • 對於有詳細文檔的代碼:
    • ★     粗略瀏覽文檔,特別注意介紹部分的閱讀。不必計較細節。
    • ★★   詳盡的學習文檔,和例子源碼的學習,瞭解如何正確的使用。某些部分文檔沒有描述清楚的,可以參考下源碼,切勿深陷源碼的泥潭,大體瀏覽即可。
    • ★★★ 在上面的基礎上,研究源碼。可以正向,根據設計來研究代碼,也可通過源碼逆向出架構和設計。
  • 對於沒有文檔或者文檔簡潔的一塌糊塗的代碼:
    • ★     運行幾個可執行的東西,看看這個玩意到底是個什麼。沒有可執行文件,那就只能大體瀏覽下源碼了。看看文件裏面的註釋之類的就可以了。不必深究代碼到底是什麼。
    • ★★   要熟練使用該代碼,必須要讀代碼了,先模仿已有的各種寫法。若有不明白之處,可以問問別人,查查資料,或者跟進實現代碼,看個究竟,也不要糾結於具體實現,只要保持自己在應用層就可以了。
    • ★★★ 想要知道一切,只能深入研究代碼了。

注意:上面的方法還是比較籠統的。需要進一步細化。

保存學習成果:筆記/博客/代碼/知識庫

學習的過程中,可能要產生些想法,或新知識,或自己寫的一些試驗代碼。最好都保存下。也可以成博客,與其他人分享學習所得。討論並進步。

2011/07/08 22:01 david++ 上海·松江

發佈了88 篇原創文章 · 獲贊 31 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章