閱讀原始碼總結

來源:互聯網
上載者:User

        

        主要流程與方法: 


          STEP0.     瞭解系統的整體設計及概念 
       優秀的系統通常會有一個優雅的整體設計, 由一組簡潔的概念串聯起來。 最好首先瞭解系統的整體架構和所基於的概念, 會對理解系統的構造與運行有一個總體的引導作用。

STEP1.    熟悉項目程式碼群組織結構


       優秀的開源項目通常會有清晰而有層次化的項目組織圖。

       拿到項目原始碼, 第一件事:概覽項目組織圖, 弄清楚哪些主要模組(包),  各個模組(包) 的主要作用;各個模組(包) 下面有哪些主要類, 其作用如何。  
       優秀的項目代碼通常會對系統所涉及的每個點都有一個較好的抽象。 哪怕只是一些簡單的顏色字串, 也會儘力用枚舉來實現它。 

STEP2.    確立目標,縮小範圍

        在開始閱讀原始碼之前, 心裡要定一個目標去驅動閱讀。 比如說, 要探究 proxools 串連池有時擷取不到資料庫連接的問題, 或者弄清楚 extjs 分頁控制項 PagingBar 的內部實現。  先攻取一個小分支, 將閱讀範圍縮小到容易完成的程度。物理學家一上來也不是能一下子弄懂整個宇宙的。
STEP3.    從外部行為入手
       反覆閱讀 API 文檔,  理解其外部行為,弄清楚設計所針對的需求目標, 理解這些類或模組是如何協作完成整體目標的, 閱讀(如果有的話)或者繪製出相應的協作設計圖;  此外, 根據自己的開發經驗和才智,
主動思考和大膽猜測:  如果是自己, 將會如何??  可能是通過何種方式來實現? STEP4.    鎖定主要和核心的類與方法

       任何設計都會隱式或顯式地有“關鍵角色” 與 “支撐角色” 的分工。閱讀原始碼並不是盲目漫無目的的行為, 而是要先鎖定主要和核心的類與方法, 作為切入點。STEP5:   標記主要流程, 繪製協作互動圖
        跳過各種細節, 主要集中於弄清楚主要流程, 由哪些模組、類以及哪些方法參與, 標記、繪製協作互動圖。STEP6:   分解細節,各個擊破
        開發架構為了追求靈活性和可擴充性, 相對比業務系統代碼更難理解一些。 尤其是細節盤根錯節,相互依賴影響。 沒關係, 將多種細節分解成多個小任務, 各個擊破。  

 

輔助手段: 

    1.    邊閱讀邊注釋

          對讀過的地方做些必要的注釋, 主要突出其用途,必要的實現細節;

    2.    搭建環境, 運行, 調試

          搭建好源碼環境, 運行起來, 然後設定斷點調試, 觀察結果, 很好的跟蹤方式;

    3.    從簡單著手, 善於分解小任務

          對 Spring ,  Tomcat 的原始碼無從下手?  從 JDK, Junit 看起;  看不懂 Extjs Grid 的代碼? 從 Label, ComboBox  著手; 一個龐大的類看的吃力? 不妨將其分解成多個小任務, 各個擊破。

         就像任何一門技藝一樣, 閱讀原始碼的技能也要從基礎一點一點的訓練, 直到嫻熟、爐火純青的境界。

    4.    找點其它的事情做做

        閱讀原始碼可不是這世界最美妙的事情。 如果起初不是很適應的話, 可以先讀若干函數, 然後做點其它事, 比如活動活動, 聽聽歌看看視頻, 然後再回來閱讀, 反覆如此, 來逐漸增強這種耐心和適應感。        

心理考驗: 

難以看懂的地方是挑戰和提升的機會

      總會遇到看不懂,想不通的地方;  這時, 可能需要彌補下基礎知識, 也可能學習到某種進階技巧, 一定不要放過這種學習機會。

   耐心, 毅力,  攻城之戰

         這是必過的檻, 必須攻克的城池。 有些艱難, 需要很大的耐心和毅力, 但是, 一旦攻下, 就為後面的前進打下很好的鋪墊了。

                      參考文章:              1.   如何閱讀別人的原始碼               2.   如何閱讀原始碼                3.  如何看懂原始碼

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.