天天看點

學習開源代碼的三個層次

網絡上有很多優秀的開源代碼,學習這些代碼是提高自己程式設計水準的最佳途徑。我們在實際項目開發的過程中也會使用很多優秀的開源代碼來加快開發速度,避免重複造輪子。優秀開源代碼至少可以給我們提供三個層次的學習資料。

第一層次:使用開源代碼

這一步相對簡單,也是大部分人在項目開發過程中最常用的方式。優秀的開源代碼一般文檔齊全,示例代碼豐富。通過簡單地學習這些資料,可以較容易地掌握開源代碼的用法。

第二層次:閱讀開源代碼,了解其實作原理

做到這一步的人就比較少了。這一步需要花很多時間,而且還需要一些必要的基礎知識儲備。但如果能達到這個層次,能掌握的技能也會比較多,不單單是開源代碼本身的核心邏輯及其架構設計,還能掌握軟體開發過程中的一些最佳實踐法則。比如單元測試,利用travis進行自動編譯測試等等。

第三個層次:吸收并應用開源代碼的設計理念到自己的軟體開發過程中去

看得懂和懂得靈活應用是兩個層次的東西。從看得懂到會靈活應用中間還需要大量的時間去思考,去實踐。面試過不少人,講起來頭頭是道,真要讓他寫出來時,卻卡殼了。要麼類名方法名忘記了(IDE惹的禍),要麼寫出來的完全變味。要真正掌握一個技能,除了多看,還要多寫,更要多總結,多思考。大道至簡,總結多了,無非都是那些模式。面向測試的程式設計,面向對象程式設計,設計模式,函數式程式設計,宏等等這些抽象的概念,通過一些優秀的開源代碼去總結思考,才能真正地了解這些抽象概念,最終把這些設計理念應用到自己的代碼中去。

今日推薦

今天推薦一個Android開源庫EventBus。

EventBus is publish/subscribe event bus optimized for Android.
  1. 它和Android的廣播通信方式有什麼差別?
  2. 它和另外一個開源庫Otto有什麼差別?

答案都在其官方文檔裡。關于這個庫,還有兩個很好的學習資源:

  1. event-bus-demo

    這是一個DEMO程式。

  2. EventBus 源碼解析

    這個分析了其原理和實作。

網絡上的那些XXX源碼解析,XXX源碼情景分析之類的文章品質還是比較高的,但這些文檔不能代替對源碼的閱讀。這些文檔的作用是幫助初學者更好的了解源碼,降低學習成本。需要深刻了解設計精髓,還是需要通過閱讀源碼去深刻領會。閱讀一些設計優秀的源碼和青春期時閱讀汪國真的蒙珑詩一樣美。與其走馬觀花,不如花一些時間深入去學習幾個開源代碼,自己償試通過閱讀代碼總結出其架構和設計的精髓。通過這樣的訓練,幾個月後就會發現程式設計水準會有長足的進步。