關於看源碼的心得體會

前言

  前段時間面試,經常遇到面試官在結束的時候問我看過什麼開源源碼?然後網上對於看源碼這塊的說法也有各種不同的意見,我進行了總結如下:

不看源碼說法:

  • 平常的工作需求、業務忙的一批,哪有時間空下來看源碼
  • 看源碼只是爲了面試,也就是應付那句話:面試造火箭、入職擰螺絲
  • 浪費時間,又不是做框架組件研發的大牛,沒必要,把公司產品+業務完善就好了
  • 看不下去,好不容易看到了自己能瞭解的,結果再往裏深入就出不來了
  • 喫青春飯的職業,遲早要轉行,沒必要一條路走到黑,有多的時間不如研究其他的行業

看源碼說法:

  • 豐富自己的經驗、擴寬思維,避免寫爛代碼
  • 項目中和框架打交道比較多,熟悉源碼能快速定位問題
  • 設計更加複雜的系統的時候,能更加深入到底層去分析問題,從而減少事故
  • 本身就很愛好這個行業,對代碼有很高的追求
  • 程序員到了一定的年限,要有自己的知識儲備

自己的經歷

  筆者從事了5年的Java開發,當初從事Java那1-3年基本都是想着如何把需求實現,最簡單的無非是一堆crud+各種if,在2年後會結合思考如何優化代碼,比如看一些規範文檔+設計模式並運用到項目上;那時候對源碼還是沒有概念,比如遇到報錯問題直接百度解決(不可否認最笨但是是效率最快的)。隨着年限的增長、經歷跳槽、行業變動、新技術不斷出新等等,慢慢的意識到自己的一個職業規劃發展,比如瓶頸期如何突破、如何改變一直寫crud、技術的廣度深度如何抉擇..... 在第三年的時候開始改變了原有的觀念(不再做一些重複的勞動),也可能是受到周邊同事的影響,一些做了比較久的開發,寫的代碼明顯和自己的有區別,比如人家會抽象出接口、抽象類,各種分包、解耦等等;再比如應用一些組件,只需要一個註解就能搞定我們原來重複的工作,所以懷着這些因素不斷去摸索,也慢慢的去了解了一些底層的原理和實現機制,在以後的開發過程中,也會更多地時間去思考和學習以及總結。

我看過的源碼

  我自己也嘗試看過Spring、JDK集合、Dubbo、Mybatis框架的源碼,但是都不是很深入那種,可能只是說某幾個感興趣的模塊會去深入看看,不會細節到某方法的某個屬性;之所以看源碼也是因爲自己平時工作中或多或少都接觸到這些框架,然後也會去思考一些問題:比如我用了Spring爲什麼配置一個註解就能做到自動注入?Dubbo是如何做到一個註解就能把我的服務暴露到zk? Mybatis寫一個Mapper接口就能執行Sql語句原理?也許會有人問,你看這些有什麼作用,你的工作又用不到,這個我會在下面再去描述。

我是如何看源碼

  和大多數人一樣,去github上下載源碼到本地,打開idea導入後,大概看下有哪些包哪些模塊,寫一下每個模塊的作用,結合網上的架構圖+時序圖找到自己想看的那塊,再搭配文檔(一般都是英文,本人英文比較差,所以都是看國人翻譯的,雖然可能不是很全或者全對,但是這不是主要的,主要的是思想和流程是對的)進行debug,debug的時候肯定會遇到一些不太清楚爲什麼要這麼做的點,這時候通過xmind記錄,然後後期可以找這種源碼社區去提問(如果你身邊有牛逼的人也可以)

看了這些源碼有哪些感想

  • 摸清了本質,不再侷限於表面,舉個例子,ArrayList add一個元素,但是add之後裏面做了什麼操作?存儲到哪裏了?size滿了之後怎麼辦?有線程安全和併發問題嗎?然後自己在使用這些集合的時候會更加註意細節,不再是爲了new一個ArrayList而去new
  • 源碼的作者一般對註釋比較重視,我記得看過一個類,註釋比代碼還多,反而參照下我自己經歷過的這段工作經歷,註釋基本可以說很隨意。
  • 源碼的作者在設計的時候考慮到很多場景,所以站在巨人的肩膀上再去思考的話會有新的體會

看完源碼我自己做了什麼事情

  • 參考源碼作者的一些思想,自己沉澱出一些組件和工具,並根據不同的業務場景封裝後提供給組內其他開發使用,解決一些重複的工作
  • 某些框架的特性不符合我們項目需求,進行了二開,能快速響應我們項目需求

推薦看什麼源碼

  最近的一段時間,我個人比較喜歡看一些偏向業務的框架源碼,而非純技術上的源碼。因爲經歷了這幾年工作會發現國內的公司都更加偏向業務型公司,這個也正常,因爲公司沒有業務就不能正常發展;所以我在對業務這塊的一些場景下的解決方案會有一定的學習,比如數據批量處理如何快速高效、分佈式事務如何實現等等,所以我個人是推薦多看一些業務上的解決方案和相關源碼

看源碼誤區

  • 不要爲了看源碼而看源碼,而不做知識輸出,最好能自己手動實現一個方案或者有自己的思想
  • 能運用到項目上最好,否則一切都是自娛自樂,沒有實際意義,給人就是紙上談兵,誇誇其談
  • 大部分公司都是結果導向,不要爲了看源碼而耽誤了項目進度,否則一切都沒意義

最後

  看源碼是一個非常辛苦而且費時間腦力的過程,必須要不斷堅持纔能有很好的效果。本人這篇博客只是代表自己的觀點,並不全對,大家看完參考下就可以。

 

作者:DDZ_YYDS
出處:https://www.cnblogs.com/zdd-java/
本文版權歸作者和博客園共有,歡迎轉載!但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接!

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章