看阿里P7架構師是如何閱讀源碼

程序員天天都在和代碼打交道,通過數年的基礎教育和職業培訓,大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。可是,會讀代碼的並很少數,會讀代碼且讀懂大項目源碼的,少之又少,這也形成了不少錯誤看源碼的方式。java

那要如何正確的分析源碼呢?程序員

今天跟你們分享一下我平時閱讀源碼的幾個技巧,對於閱讀java中間件,如Spring、Dubbo等框架源碼的程序員們有必定幫助。本文基於Eclipse IDE,咱們天天都使用的IDE,其實它有不少強大的功能,掌握它們,每每可以事半功倍。編程

一、Quick Type Hierarchy 快速查看類繼承體系。

快捷鍵:Ctrl + T架構

clipboard.png

查看類不少人可能都知道,可源碼閱讀的時候更多用來查看方法體系更重要,能夠方便快速的定位到方法的實現類。如:框架

clipboard.png

此時若是想查看getBean()方法如何實現,可能會讓你失望。結果以下:源碼分析

clipboard.png

進入到了BeanFactory的接口定義方法,什麼也沒有。學習

此時咱們直接在getBean上 Ctrl+T :ui

clipboard.png

能夠看到其實現的子類,點擊子類進去便可。此方法還適用於框架中很是常見的模板方法模式,在抽象類中定義的模板方法,用這招輕鬆找到實現類。spa

固然還有詳細的Open Type Hierarchy線程

clipboard.png

會在左側視圖裏面展現更好的Type View:

clipboard.png

二、Open Call Hierachy 打開調用層級

快捷鍵:Ctrl+Alt+H

clipboard.png

我的認爲這是閱讀源碼最有用的利器,掌握它,能夠輕鬆遊走於各類方法調用之間,然而從我身邊的朋友來看, 不少人都不知道它的存在。

Open Call Hierachy 查看結果以下,調用關係清晰明朗,能夠直接定位到調用的地方。

clipboard.png

三、Debug 斷點的靈活使用

斷點調式時,心中必須很清楚F五、F六、F七、F8的做用,否則要麼迷失於源碼之中,要麼什麼都沒看清就走完了。

再次囉嗦一下它們的做用:

  • F5 Step Into,單步進入。進入到某個方法裏面;
  • F6 Step Over,單步結束。一行一行的執行代碼,入門時不少人只會一行一行走;
  • F7 Step Return,跳出放發。進入到某個方法裏面時,若是發現這個方法沒有你想看的東西,或者已經看到了你想看的,直接F7,跳出到方法外。
  • F8 Resume,繼續往下執行。往下執行,遇到下一個斷點時再停下來,沒有則一直運行完。

調試時咱們可能會常常遇到loadClass的狀況:

clipboard.png

在40行想進入ClassPathXmlApplicationContext構造方法,F5不料進入了類加載:

clipboard.png

熟悉類加載的同窗會很熟悉,不熟悉類加載機制的也不要慌,這是說明你調試的類第一次被加載,這時候咱們F7跳出類加載,回到40行。

clipboard.png

這個時候再按F5會真正進入ClassPathXmlApplicationContext構造方法。

當咱們斷點跟蹤Spring這種源碼的時候,必定要有節奏,以優先找到總體脈絡爲準,不要一直的F5進入每一行細看,F5下去,幾天都走不完Spring。能熟練在Spring這種框架中F五、F六、F七、F8,就離弄懂它不遠了。

Dubug的時候還應該注意debug視圖的線程棧:

clipboard.png

這個視圖可以讓你在走得比較深的時候,能夠一眼看出本身怎麼進來的,當前位於什麼方法裏等信息,還能夠點擊對應的代碼行數進入查看。

總結,這是我使用IDE跟蹤源碼的幾個小技巧,尤爲是第二點,是很實用的,但願對你們在進行源碼跟蹤時有必定幫助。看了這麼多的源碼,我對這些技術點進行了一個系統的整理,想要學會如何閱讀源碼,提高進階的朋友們能夠來下載資料,加君羊:854601507,歡迎加羣免費領取一塊兒學習,相互討論。

圖片描述

分享這份源碼分析圖給你們,但願對你們有所幫助,架構師很漫長,一塊兒共勉吧!

僅以身邊朋友的一次成長經歷分享給喜歡Java,喜歡編程,有夢想成爲架構師的程序員們,但願可以幫助到大家。

相關文章
相關標籤/搜索