不是絕對的,只是提供一種大致的思路
大致的了解乙個類、方法、欄位所代表的含義
明確你需要了解某個功能a
的實現,越具體越好,列出切入點
,然後從上至下的分析
對於行數龐大、邏輯複雜的原始碼,我們在追蹤時遇到非相關原始碼是必定的,可以簡單追蹤幾個層級,給自己定乙個界限,否則容易丟失目標,淹沒在原始碼的海洋中
追蹤有沒有直接返回該字段的方法,通過方法注釋,直接快速了解該字段的作用。
對於沒有向外暴露的字段,我們追蹤它的usage
:
數量較多:建議另闢蹊徑,實在沒辦法再逐一攻破
涉及新的類:看分支類
非功能a
相關:略過
動態分析的資料能夠幫助我們去驗證我們的理解是否正確,實踐是檢驗真理的唯一標準
當你從某個方法出發,尋找它是在何處呼叫時,請記住你的目的,我們應該在脫離了強相關功能方法處截止,繼續usage
的意義不大。
比如recyclerview
中scraporrecycleview
,我們的目的是:尋找什麼時候觸發了**view
應該在onlayoutchildren
處停止,再繼續usage
時,你的目的就變成了:尋找什麼時候布置adapter
所有相關的子view
指導原則 閱讀原始碼
了解這個功能模組的設計模式追蹤函式呼叫時所傳遞引數 輸入輸出模型,抓住關鍵資料流 關注類的上下文環境了解函式的參與物件 類學會畫類圖和時序圖理清對應類的功能了解各類的耦合相關性嘗試理解所採用的設計理念時刻記住函式類的目的抓住全域性變數的線索 如static,threadlocal,特殊的資料結構 輸...
《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...
原始碼閱讀 Glide原始碼閱讀之with方法(一)
前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...