到底該不該看原始碼 懂這三點兒就夠了

2021-09-25 07:25:00 字數 1078 閱讀 4776

1、不要為了看原始碼而看原始碼

2、**積累到一定程度,遇到問題自然就去查原始碼了,然後你就看懂了

3、兩年內不要刻意去看原始碼,可以點開簡單了解一下就行,前兩年瘋狂做專案就行了,後期專案做的多了,你自己就會有疑問,每次寫**就會問自己為什麼要這樣寫?底層的原理是什麼?很自覺的帶著問題就去看原始碼了,如果你沒有這樣的疑問,那說明你也不適合去看原始碼了,寫寫業務**,了了一生

1、先看文件,整體把握

一般來說,文件是對**的高度凝練,乙個高質量的開源一般會包含tutorial、specification、api reference等documents,通過選擇性的略讀、精讀這些文件,就能大致了解專案的整體架構、設計原則。6 大設計原則,你知道嗎?

正確的路線是通過文件去認識這個專案,然後通過閱讀**去驗證文件、深入細節,而不是通過直接啃原始碼來了解這個專案,以偏概全

2、理解**組織,檔名,類名

當需要看**的時候,不要找到乙個檔案就開始,先看看**組織,粗略看看檔名、類名,基本就能猜測到每一部分。比如redis的原始碼就組織得很好,基本上看檔名就可以快速定位每乙個command的實現位置

3、關注乙個問題,從問題追蹤**

看原始碼的目標決定了此時此刻的關注點,不管是解決遇到的bug還是學習某個演算法,都讓我們聚焦到乙個具體的問題,從這個具體的問題去追蹤**,忽略掉當前無需關注的細枝末節,步步深入,直達目標

當然在解決乙個問題的時候,有可能會引發新的問題,尤其是學習的時候,此時只需記錄新問題(放到收集籃,不要立即發散),待之前追蹤的問題解決之後,再來看新發現的問題

4、解決乙個issue

如果自己沒有問題,那麼就幫忙解決別人的問題,通常來說,開源專案都有許多待解決的issue,從中選擇乙個入手即可

5、除錯

只要可以,一定先讓**編譯通過、跑起來,這樣不管是加log、列印呼叫棧還是斷點除錯都方便很多,不跑起來很難知道到底在幹啥

6、加注釋,做筆記

如果某份源**的閱讀並不是一錘子買賣,日後還可能回顧、重新閱讀,那麼就一定要做好**注釋和筆記。筆記主要是框架圖、類圖、流程圖,目標是建立索引,方便日後快速回憶

而注釋就是閱讀**時的細節,重新閱讀的時候看注釋(特別是函式的注釋)能節省很多時間

到底該不該告發

昨天看到乙個新聞,乙個女孩因為父母離婚,把自己的父親告上法庭,包二奶。這個故事從人情世故來看,最大的猜測可能就是,王母的疑心比較重,王父感情走私,兩人離婚,在現代社會,是乙個很普通的感情糾葛,麻煩的就是王一時衝動,把自己的父親暴露在網路上。網路是乙個很可怕的 群體的無理智性在網路上發揮的淋漓盡致。王...

靜態方法 Static 到底該不該用?

最近在review同事 的時候發現乙個問題,很多類裡邊穿插了一些靜態方法,而且情況很普遍,呼叫的時候有的需要例項化,有些不需要例項化直接呼叫。我問他為什麼要用那麼多靜態方法,他說 使用方便,不需要例項化,而且這些靜態方法不需要儲存狀態,不需要呼叫外界變數,應該是執行緒安全的 後來我們一起研究討論了一...

腦殼疼!到底該不該裸辭?

在3 4月的跳槽高峰期裡,一群為了 該不該裸辭 這個話題展開了一場嚴肅的辯論,前方是辯論現場,歡迎各位圍觀,發表你的觀點!正方 該裸辭 我每次跳槽都是選擇裸辭,裸辭是最簡單的方式。如果不裸辭,每次請假都要編理由,一兩次還可以,次數多了領導難免起疑心,自己還要遮遮掩掩。明明就是正當辭職,感覺像自己心虛...