看不懂原始碼,一條路debug嗎?
大家好呀,我是樓仔。
有很多同學看不懂原始碼,但是又想學,不知道怎麼辦,開源專案應該怎麼學習?直接一條路 debug 嗎?
我相信很多同學都遇到過類似的問題,特別是剛接觸原始碼,或者剛參加工作不久的同學。
不僅僅是開源原始碼,公司專案其實也一樣。
比如你剛入職不久,或者剛接手公司的某個專案,如果專案簡單還好,對於稍微複雜一些的專案,關鍵是你還必須快速上手(老闆才不會讓你花太多時間慢慢學習),就非常頭疼了。
球友提問
樓仔,想問一下對於沒有影片的開源專案應該怎麼學習?直接一條路 debug,然後彙總檔案嗎? 有沒有好的思路?
樓仔回答
球友好,你這種問題,我工作頭幾年也遇到過,後來看的程式碼多了,也總結了一套自己看程式碼的流程和方法,希望能對你有幫助。
無論是開源專案,還是公司專案,我一般會按照下面這套流程,就拿我們的技術派專案來說:
一個專案上來直接看程式碼,然後一條路 debug,你會一下子陷進去,我一般是先找專案檔案(我很少看影片),或者網上的部落格,搞懂整個專案的框架、功能模組劃分、整體流程等,讓你對專案有一個整體的認識。
然後再選擇一個你感興趣的模組作為突破口,也是找一些該模組的檔案(或者網上有一些讀者的筆記),搞懂它的整個設計思路。
最後才是看程式碼,看程式碼之前,我也不會直接開整,我會先看 DB,因為所有的操作都是圍繞 DB 去處理的,搞懂 DB 的設計和各表之間的關係後,再去找該模組的入口去看程式碼。
看程式碼時,千萬不要陷入細節,這點要牢記!!!要學會“抓重點”,就比如一棵樹,你要抓主幹,不要鑽到枝葉裡面出不來,之後就可以去 debug。
抓完主幹後,如果你對某些細節感興趣,可以再慢慢深入研究。
總結一下:框架 + 模組 -> 模組設計思路和流程 -> DB設計(如果沒有可以跳過) -> 抓程式碼主幹 + debug -> 扣程式碼細節 -> 再看其它模組,直到全部看完。(不過我有時也會先看“DB設計”,再看“模組設計思路和流程”,這個因人而異。)
比如我之前看 Spring 原始碼,就拿 Spring 迴圈依賴來說,這個巢狀邏輯有點深,不是很容易看懂,但是我看得很快,主要就是用了上面這套方法,多借力身邊的資源,先框架、再原理、再主幹、最後扣細節。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024922/viewspace-2936618/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 瀑布式DEBUG Spring MVC原始碼SpringMVC原始碼
- IDEA之如何Debug原始碼跟蹤Idea原始碼
- debug:am trace-ipc原始碼分析原始碼
- 不學設計模式,原始碼你都看不懂!設計模式原始碼
- 你為什麼看不懂原始碼之Vue 3.0【1】原始碼Vue
- mybatis原始碼解讀---一條sql的旅程MyBatis原始碼SQL
- 直播平臺搭建原始碼,canvas 畫一條波浪線 進度條原始碼Canvas
- 直播原始碼,一對一交友原始碼,短視訊原始碼,你知道他們的區別嗎?原始碼
- vue原始碼分析系列之入debug環境搭建Vue原始碼
- 免費的網路教育原始碼能用嗎?應該如何辨別優質的網路教育原始碼?原始碼
- 比特幣原始碼分析-網路(一)比特幣原始碼
- Debug神器!一條SSH隧道穿透全部伺服器所有埠穿透伺服器
- IDEA小技巧:Debug條件斷點Idea斷點
- vscode 如何debug第三方模組原始碼VSCode原始碼
- thinkphp仿今日頭條原始碼PHP原始碼
- 搭建一套帶貨直播原始碼,你瞭解內容分發網路嗎?原始碼
- 網路安全學原始碼審計嗎?怎樣才能學好網路安全原始碼
- 一對一聊天原始碼,vue實現環形進度條元件原始碼Vue元件
- 背八股文和 DEBUG 原始碼,差別在哪?原始碼
- Spring原始碼--debug分析迴圈依賴--構造器注入Spring原始碼
- 你為什麼看不懂原始碼之Vue 3.0 面面俱到【2】原始碼Vue
- 看不懂《信條》?也許你該玩玩《時空幻境》
- 直播商城原始碼,去掉導航條和tabbar線條原始碼tabBar
- 學不懂Netty?看不懂原始碼?不存在的,這篇文章手把手帶你閱讀Netty原始碼!Netty原始碼
- 雲端計算學習路線原始碼框架筆記:Mysql原始碼一原始碼框架筆記MySql
- 影片直播app原始碼,去掉導航條和tabbar線條APP原始碼tabBar
- Bash指令碼debug攻略指令碼
- 想要一份senior工作,務必要讀 React 原始碼嗎?React原始碼
- 成品直播原始碼推薦,去掉導航條和tabbar線條原始碼tabBar
- app直播系統原始碼,點選生成條形碼APP原始碼
- 記憶體條一邊4g一邊8g可以嗎 雙通道記憶體條要一模一樣嗎記憶體
- Laradock 使用 PhpStorm Debug 程式碼PHPORM
- 急速 debug 實戰三(Node - webpack外掛,babel外掛,vue原始碼篇)WebBabelVue原始碼
- 原始碼|jdk原始碼之HashMap分析(一)原始碼JDKHashMap
- SpringBoot原始碼@ConditionalOnBean與@ConditionalOnClass你清楚嗎Spring Boot原始碼Bean
- 走原始碼路線,淺談react的一些思路原始碼React
- eKuiper 原始碼解讀:從一條 SQL 到流處理任務的旅程UI原始碼SQL
- 直播平臺搭建原始碼,uniapp progress進度條原始碼APP