學習開原始碼的三個層次
網路上有很多優秀的開原始碼,學習這些程式碼是提高自己程式設計水平的最佳途徑。我們在實際專案開發的過程中也會使用很多優秀的開原始碼來加快開發速度,避免重複造輪子。優秀開原始碼至少可以給我們提供三個層次的學習資料。
第一層次:使用開原始碼
這一步相對簡單,也是大部分人在專案開發過程中最常用的方式。優秀的開原始碼一般文件齊全,示例程式碼豐富。通過簡單地學習這些資料,可以較容易地掌握開原始碼的用法。
第二層次:閱讀開原始碼,理解其實現原理
做到這一步的人就比較少了。這一步需要花很多時間,而且還需要一些必要的基礎知識儲備。但如果能達到這個層次,能掌握的技能也會比較多,不單單是開原始碼本身的核心邏輯及其架構設計,還能掌握軟體開發過程中的一些最佳實踐法則。比如單元測試,利用
第三個層次:吸收並應用開原始碼的設計理念到自己的軟體開發過程中去
看得懂和懂得靈活應用是兩個層次的東西。從看得懂到會靈活應用中間還需要大量的時間去思考,去實踐。面試過不少人,講起來頭頭是道,真要讓他寫出來時,卻卡殼了。要麼類名方法名忘記了(IDE惹的禍),要麼寫出來的完全變味。要真正掌握一個技能,除了多看,還要多寫,更要多總結,多思考。大道至簡,總結多了,無非都是那些模式。面向測試的程式設計,面向物件程式設計,設計模式,函數語言程式設計,巨集等等這些抽象的概念,通過一些優秀的開原始碼去總結思考,才能真正地理解這些抽象概念,最終把這些設計理念應用到自己的程式碼中去。
今日推薦
今天推薦一個Android開源庫EventBus。
EventBus is publish/subscribe event bus optimized for Android.
- 它和Android的廣播通訊方式有什麼區別?
- 它和另外一個開源庫Otto有什麼區別?
答案都在其官方文件裡。關於這個庫,還有兩個很好的學習資源:
網路上的那些XXX原始碼解析,XXX原始碼情景分析之類的文章質量還是比較高的,但這些文件不能代替對原始碼的閱讀。這些文件的作用是幫助初學者更好的理解原始碼,降低學習成本。需要深刻理解設計精髓,還是需要通過閱讀原始碼去深刻領會。閱讀一些設計優秀的原始碼和青春期時閱讀汪國真的蒙瓏詩一樣美。與其走馬觀花,不如花一些時間深入去學習幾個開原始碼,自己償試通過閱讀程式碼總結出其架構和設計的精髓。通過這樣的訓練,幾個月後就會發現程式設計水平會有長足的進步。