程序員天天都在和代碼打交道,通過數年的基礎教育和職業培訓,大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。可是,會讀代碼的並很少數,會讀代碼且讀懂大項目源碼的,少之又少,這也形成了不少錯誤看源碼的方式。java
那要如何正確的分析源碼呢?程序員
今天跟你們分享一下我平時閱讀源碼的幾個技巧,對於閱讀java中間件,如Spring、Dubbo等框架源碼的程序員們有必定幫助。本文基於Eclipse IDE,咱們天天都使用的IDE,其實它有不少強大的功能,掌握它們,每每可以事半功倍。編程
快捷鍵:Ctrl + T架構
查看類不少人可能都知道,可源碼閱讀的時候更多用來查看方法體系更重要,能夠方便快速的定位到方法的實現類。如:框架
此時若是想查看getBean()方法如何實現,可能會讓你失望。結果以下:源碼分析
進入到了BeanFactory的接口定義方法,什麼也沒有。學習
此時咱們直接在getBean上 Ctrl+T :ui
能夠看到其實現的子類,點擊子類進去便可。此方法還適用於框架中很是常見的模板方法模式,在抽象類中定義的模板方法,用這招輕鬆找到實現類。spa
固然還有詳細的Open Type Hierarchy線程
會在左側視圖裏面展現更好的Type View:
快捷鍵:Ctrl+Alt+H
我的認爲這是閱讀源碼最有用的利器,掌握它,能夠輕鬆遊走於各類方法調用之間,然而從我身邊的朋友來看, 不少人都不知道它的存在。
Open Call Hierachy 查看結果以下,調用關係清晰明朗,能夠直接定位到調用的地方。
斷點調式時,心中必須很清楚F五、F六、F七、F8的做用,否則要麼迷失於源碼之中,要麼什麼都沒看清就走完了。
再次囉嗦一下它們的做用:
調試時咱們可能會常常遇到loadClass的狀況:
在40行想進入ClassPathXmlApplicationContext構造方法,F5不料進入了類加載:
熟悉類加載的同窗會很熟悉,不熟悉類加載機制的也不要慌,這是說明你調試的類第一次被加載,這時候咱們F7跳出類加載,回到40行。
這個時候再按F5會真正進入ClassPathXmlApplicationContext構造方法。
當咱們斷點跟蹤Spring這種源碼的時候,必定要有節奏,以優先找到總體脈絡爲準,不要一直的F5進入每一行細看,F5下去,幾天都走不完Spring。能熟練在Spring這種框架中F五、F六、F七、F8,就離弄懂它不遠了。
Dubug的時候還應該注意debug視圖的線程棧:
這個視圖可以讓你在走得比較深的時候,能夠一眼看出本身怎麼進來的,當前位於什麼方法裏等信息,還能夠點擊對應的代碼行數進入查看。
總結,這是我使用IDE跟蹤源碼的幾個小技巧,尤爲是第二點,是很實用的,但願對你們在進行源碼跟蹤時有必定幫助。看了這麼多的源碼,我對這些技術點進行了一個系統的整理,想要學會如何閱讀源碼,提高進階的朋友們能夠來下載資料,加君羊:854601507,歡迎加羣免費領取一塊兒學習,相互討論。
分享這份源碼分析圖給你們,但願對你們有所幫助,架構師很漫長,一塊兒共勉吧!
僅以身邊朋友的一次成長經歷分享給喜歡Java,喜歡編程,有夢想成爲架構師的程序員們,但願可以幫助到大家。