∞前言∞

由於還是很多人搞不清楚怎麼有效率的學寫 Android ,所以就來生出這篇了
「當然這是我的方法,不一定每個人都適用!」
當然我也可以直接落下一句:請多練習多寫,才是紮實的訓練法,沒有任何後門

雖然就某種方面來說確實如此,不過我發現其實有人甚至連如何「練習」都不知道
所以還是說一個對於一個開發者來說,應該算是很單純的流程吧
而對於我來說,這是學習一個語言最該先了解的。

====================

∞正文∞

首先你要了解的是,這個語言的 Hello world
再來你要了解的是幾個簡單的 Sample
我相信大家看到此大概都懂了,可是接下來才是關鍵。

一、架構

Android 本身有著 Life cycle ,不熟悉這個不能說懂 Android ,當然這個可以放後面了解
要了解透徹並可以融會貫通 Android ,物件導向的概念是不可或缺的
有人說他相信不靠物件導向一樣可以寫 Android ,我只能內心 OS :呵呵

當沒有物件導向的概念時,我很難認為你真的寫得出一個好的 Android application
在這概念下,下一個該了解的是 Design Pattern ,這是為了將一個程式完善到別人接手或是共同開發可以瞬間上手
同時也是為了讓維護成本降低而必備的東西

你的程式設計結構決定了你的效能與產值
舉個例子,當需求變更,要你改變畫面流程,你的結構能夠支援你到什麼程度?
幾秒鐘改好?幾分鐘?幾個小時?好幾天?

畫面的小變動我想只要幾秒就能處理好,處理不好就表示這基本的畫面變動處理你還要加強
畫面內包含值得傳遞,這也只要幾分鐘就可以完成,你只要善用 Observer Pattern,甚至只是靠ViewController,就可以完成
當畫面的切換上有著層級概念的變動時,就可能需要幾個小時來完善
耗費幾天的工程,幾乎是屬於 bug 的處理(看 bug 多寡)

如果上述幾個簡單的部分都沒法達成,身為一個 Android Developer 個人認為就還只是個 Junior
在 Android 上最重要的不外乎就是資料的呈現與畫面的變動
所以你必須了解到的結構有兩個

  1. Programmatically UI Control
  2. Data Structure

不要看這兩個看起來很單純,你在設計時就要思考未來可能的變化與延展,進而去思考用何種方式設計結構
就算是現在有些結構我還是需要大改,但這也是正常的
當一個程式每次添加功能更改 API 或是變更一些資料結構,都能花不到幾分鐘搞定時,這個程式的架構便可謂成熟。

但成熟也不代表 code 會很漂亮、乾淨,這時,我們就需要 Clean Code 的概念
我認為真正的專業應該是從這裡開始, Design Pattern 與 物件導向概念 充其量只是邁向專業的基石
所以碰觸 Android 如果你不去了解這些基石,我就不知道該怎麼與你溝通了。

二、Syntax and Keyword

身為一個開發者、工程師,自己的 survey 能力是非常重要的
有時候你查不到資料是因為不知道 keyword
有時候你實作不出 app 是因為不知道有哪些語法

不過上述兩點都是建立在你的「架構」已經有基本概念之後
否則你連如何設計出一個「好的架構」都不懂,又何來談更細部的問題呢?
然後當語法與 keyword 你都可以在短時間內掌握時(遇上問題可以短時間找到 keyword 並找到資料),就可以進行下一步

三、快速開發

身為一個開發者、工程師,我相信都有被時程追趕過的經驗,但是一個 app 的那麼多特效不是可以短時間內重新打出來的
這個時候我們就必須運用到第三方 Library
現在很多相關的 Library 分散於網路各處, github 上也有許多持續維護的 Library 可用

熟練幾個你常用的之後,在快速開發上應該就不會有什麼問題了

四、整理你的 Code

我們寫 code 一定會時常寫出相同的函示,這在某些情況下也是一個浪費時間的動作
所以我們如果有特定的設計架構,一定要把他分解出來成為自己的 Library
當然也是要搭配上各種 Design Pattern 或是 Clean Code 概念,才能讓你的 Library顯得完善

五、Memory Leak

在 Android 手機上一定會有這些問題,而且這又跟各個廠牌有關
詳細內容在此不多贅述,這是可以談上很久的問題
不過當學習到這步,其實你要開發一個 app 其實已經綽綽有餘

在這之後就已經是 Senior Android Developer 的範疇
之後不管是要玩更底層的東西或是 JNI NDK ,我相信都不是問題

六、客製化

其實學到第五點,客製化也絕對難不倒你了
那為什麼我會放在最後面呢?
因為客製化如果要玩很深,是可以非常深的,深入底層然後從最底部開始打造

連同記憶體的 malloc 控制或是 free 的操作

====================

∞結語∞

最後,其實很多人連結構本身都沒有設計好,雖然 Design Pattern 多少一定會有用到
但沒有很多人真的了解透徹並使用這個去做設計,當然更不用提 Clean Code 了
一個真正的好開發者,我認為以上所有點在設計 app 之初就已經全都考慮到了,然後才開始細節的調整與修正

Conquer and divide

我想身為一個想要不停進步的開發者,對於以上都是「好開發者的基本」應該不會有什麼意見吧?
當然如果還有遺漏的「優良開發者應有的素養」,煩請補充!

Comments

comments powered by Disqus