大家好,我是Teng,
我從事Android App Development已經有三年經驗了,
分享一下我從無到有的學習路程認知。
我從事Android App Development已經有三年經驗了,
分享一下我從無到有的學習路程認知。
如果你是新入行的朋友,可以參考參考,
也希望如果我哪裡走偏了可以被指正,感謝。
也希望如果我哪裡走偏了可以被指正,感謝。
之前提到了寫程式之前應先了解測試與寫Code的初步,
如果有遺漏的朋友可以去之前的文章看看。
如果有遺漏的朋友可以去之前的文章看看。
- Android 從無到有(0)
http://teng-wang.blogspot.tw/2016/08/How-to-Learn-Android-0.html - Android 從無到有(1)
http://teng-wang.blogspot.tw/2016/08/How-to-Learn-Android-1.html
第二部分
看這篇文章之前,
希望是對第一部分的一些基礎概念比較熟捻的程式開發者了,
但也可以依照個人學習習慣。
希望是對第一部分的一些基礎概念比較熟捻的程式開發者了,
但也可以依照個人學習習慣。
我認為當熟練了一些Android的基礎架構以後,
可以開始看這四個比較進階的東西,譬如:
可以開始看這四個比較進階的東西,譬如:
Third party library:
原則上,
就是看一看網路上的大家提供了哪些自己寫的元件,
有些元件可以直接達成工作上希望你做到的事情,
既然有人寫好輪子了,也就不用自己造輪子,
可以讓事情的進展更快,也可以學習別人的程式架構、習慣、想法。
就是看一看網路上的大家提供了哪些自己寫的元件,
有些元件可以直接達成工作上希望你做到的事情,
既然有人寫好輪子了,也就不用自己造輪子,
可以讓事情的進展更快,也可以學習別人的程式架構、習慣、想法。
我自己是看這幾個以及Github上比較多星星的項目,
看到新的時候想一想自己大概要怎麼把她實作出來,
大約需要幾天,有空就實作看看,歡迎交流:
看到新的時候想一想自己大概要怎麼把她實作出來,
大約需要幾天,有空就實作看看,歡迎交流:
- GitHub Android Libraries Top 100 简介
https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md - Libraries for developers
https://play.google.com/store/apps/details?id=com.desarrollodroide.repos&hl=zh_TW
Design pattern:
隨著寫程式解決問題多了以後,
會發現有很多問題不是那麼的好解決,
會想知道有沒有更好的解法,
這時你就該開始看一看Design pattern了,
一方面可以驗證你的想法,
也可以知道別人如何優雅的解決這些問題,
譬如前一部份的Adapter就是一個經典的Design Pattern。
會發現有很多問題不是那麼的好解決,
會想知道有沒有更好的解法,
這時你就該開始看一看Design pattern了,
一方面可以驗證你的想法,
也可以知道別人如何優雅的解決這些問題,
譬如前一部份的Adapter就是一個經典的Design Pattern。
書本的話網路上很多推薦的了,
我自己是參考這些網址:
我自己是參考這些網址:
- Design pattern ref:
http://openhome.cc/Gossip/DesignPattern/
http://teddy-chen-tw.blogspot.tw/search/label/Patterns
https://nlhsueh.gitbooks.io/oose/content/manuscript/ch5DesignPattern.html
https://wirelessr.gitbooks.io/working-life/content/c_design_pattern.html
我自己也有練習用自己的話去解釋哪些Design Pattern是什麼意思,
不過還在練習當中(遮面)。
不過還在練習當中(遮面)。
- 設計模式(自我測試版本,撰寫中)
http://teng-wang.blogspot.tw/2015/04/blog-post.html
OOP(Object-oriented programming)
其實我自己是寫程式的過程中慢慢去體會了解這個東西的,
我也不知道我算不算是很懂OOP了,
但應該比一般人好一點點,
簡單來說就是把寫的程式都物件化,擬人化,
這樣在解決問題的時候就會非常的直覺,
而不會覺得很複雜或是很讓人思考起來很不舒服。
我也不知道我算不算是很懂OOP了,
但應該比一般人好一點點,
簡單來說就是把寫的程式都物件化,擬人化,
這樣在解決問題的時候就會非常的直覺,
而不會覺得很複雜或是很讓人思考起來很不舒服。
這個東西我比較建議去看市面上的書學習,
網路上的東西東一塊西一塊,
看著看著可能還是不懂他的涵意,
未來有機會我再整理一套我自己對OOP的看法…
網路上的東西東一塊西一塊,
看著看著可能還是不懂他的涵意,
未來有機會我再整理一套我自己對OOP的看法…
DI (Dependency Inversion Principle 依賴倒轉原則)
我以前寫程式的時候也不是很懂這個東西,
一直到我後來系統寫得越來越複雜後,
發現測試開始很麻煩的時候,
才開始接觸這個概念。
一直到我後來系統寫得越來越複雜後,
發現測試開始很麻煩的時候,
才開始接觸這個概念。
program to an interface, not an implementation
寫介面,而非實作。
少用繼承,多用介面。
這部分我還不知道如何清楚的描述,就不多說,
下面列出我在理解的時候看的一些網路資源:
少用繼承,多用介面。
這部分我還不知道如何清楚的描述,就不多說,
下面列出我在理解的時候看的一些網路資源:
- Wiki
https://en.wikipedia.org/wiki/Dependency_inversion_principle - 亂談軟體設計(5):Dependency-Inversion Principle
http://teddy-chen-tw.blogspot.tw/2012/01/5dependency-inversion-principle.html - [DP] Dependency Inversion Principle 依賴倒轉原則
http://brownydev.blogspot.tw/2011/08/dependency-inversion-principle.html - Android中的依赖注入:Dagger函数库的使用(一)
https://asce1885.gitbooks.io/android-rd-senior-advanced/content/androidzhong_de_yi_lai_zhu_ru_ff1a_dagger_han_shu_ku_de_shi_yong_ff08_yi_ff09.html
Android 有些Framework就是為了方便這個概念而實作的,
譬如Dagger。
譬如Dagger。
我自己覺得OOP跟DI是對立且需要兼具的能力,
對立的原因是因為為了顧及DI,寫程式的時候要考慮的比較多,
(可能是我還不熟悉,會寫比較慢XD)
而需要兼顧的原因是因為,
良好的OOP設計可以讓架構非常的完善跟修改快速,
而良好的DI可以讓測試時非常的清楚跟測試方便。
對立的原因是因為為了顧及DI,寫程式的時候要考慮的比較多,
(可能是我還不熟悉,會寫比較慢XD)
而需要兼顧的原因是因為,
良好的OOP設計可以讓架構非常的完善跟修改快速,
而良好的DI可以讓測試時非常的清楚跟測試方便。
這兩者都具備的系統架構,我覺得是目前的我在這部分仍需努力的。
- Next:Android 從無到有(3)
沒有留言:
張貼留言
有任何疑問歡迎寄信給我,
但垃圾訊息我會刪光喔!