引言
Android 7 年,F(xiàn)lutter 半年,最近喜提中國(guó)第一位 Android & Flutter 雙料 GDFE,談?wù)勎业母惺堋?/p>
我是誰(shuí)
我是 hackware,你可能沒聽說(shuō)過(guò)我,但如果你做過(guò) Android,那你可能大概率用過(guò)我的開源庫(kù) MagicIndicator(9.2K star)。我的作品如下:
- MagicIndicator,也許是 Android 下最強(qiáng)的指示器框架
- Flutter ConstraintLayout,聲明式 UI 下更強(qiáng)大好用的約束布局
- MMP_Architecture,比 Jetpack DataBinding 更好的 MVVM 框架,數(shù)據(jù)視圖雙向綁定
- weiV,Android 全新聲明式 UI 開發(fā)框架,支持 Java
- Flutter_PVState,F(xiàn)lutter 下更輕量好用的狀態(tài)管理方案
- ChenSort,剛開發(fā)的世界上最快的通用排序算法,平均比快排快 3 倍,最快達(dá)到 20 倍
GitHub:https://github.com/hackware1993
歡迎關(guān)注我的公眾號(hào):FlutterFirst,帶你起飛。
GDFE 簡(jiǎn)介
你可能聽說(shuō)過(guò) GDE,但肯定沒聽說(shuō)過(guò) GDFE,它即 Google Developer Fake Expert,翻譯過(guò)來(lái)就是谷歌開發(fā)者磚家。
下面我從磚家的視角,談?wù)勎覍?duì)技術(shù)的一些看法,一家之言,僅供參考。
系列看法 - Android 篇
架構(gòu)
那必須把 Jetpack ViewModel 用起來(lái)啊,它是最好的 MVVM 架構(gòu)的基石。結(jié)合 LiveData 使用,比 MVP、MVC 好太多了!你再也不用像 MVP 那樣定義一大堆接口,只需要定義一大堆 LiveData。
雖然它沒有數(shù)據(jù)和視圖的雙向綁定,但它的名字叫 ViewModel,那肯定是 MVVM 啊。畢竟 MVVM = Model + View + ViewModel。再說(shuō)了,通過(guò) LiveData 來(lái)更新 UI 時(shí),你操作了 LiveData,UI 就變了,UI 事件發(fā)生后,通過(guò) viewModel.handleXXX() 通知到 ViewModel,不也是一種雙向綁定么?
即便你不用 ViewModel,那你也應(yīng)該首選 DataBinding 啊,你看,都可以在 XML 里寫表達(dá)式,多爽!
當(dāng)然,上面的論述僅限于 MVI 沒有出來(lái)之前,MVI 出來(lái)以后,肯定要拋棄 MVVM,把這個(gè)更好的架構(gòu)用起來(lái)啊!

語(yǔ)言
那必須把 Kotlin 用起來(lái)啊,你看 Kotlin 寫的代碼多簡(jiǎn)潔。再把注釋和空行刪掉,那就更簡(jiǎn)潔了,Nice!
Kotlin 早就是官方的推薦語(yǔ)言了,你再不用,就等著失業(yè)吧!
比如 Bean 類,一個(gè) data 關(guān)鍵字就搞定了,Java 多弱啊,還需要手寫那么多代碼,多費(fèi)事?。?/p>

算法
那必須要在業(yè)余時(shí)間多刷算法啊,現(xiàn)在大廠對(duì)算法都有要求,有時(shí)還是強(qiáng)制性的。再說(shuō)了,連算法都不精,你怎么向別人證明你的邏輯思維能力能夠勝任工作?技術(shù)八股文大家都會(huì)背,對(duì)算法的掌握程度才是展現(xiàn)一個(gè)人核心能力的最重要指標(biāo)。你連個(gè)快排都默寫不出來(lái),怎么證明你的實(shí)力???

Framework 原理
那必須得深入研究 Framework 層啊,毋庸置疑,只有精通底層原理,才能更好的開發(fā)出高質(zhì)量的 App。比如:
- 你不懂 Activity 的啟動(dòng)過(guò)程,不懂 AMS、Instrumentation 等等,怎么能會(huì)做應(yīng)用的啟動(dòng)優(yōu)化?
- 你不懂 ANR 的底層原理,怎么能讓應(yīng)用保持流暢?
如果你有精力,最好能深入到 Linux 內(nèi)核層。這樣也許你就能轉(zhuǎn)向底層開發(fā),那多吃香啊,做上層 UI 多沒技術(shù)含量。

虛擬機(jī)
那必須得深入研究 JVM 原理啊,你天天用 Java 開發(fā),怎能停留在語(yǔ)法表面呢,只有了解了 JVM 的原理,才能寫出更優(yōu)秀的 Java 代碼。比如:
- 你不懂垃圾回收算法,不懂分代回收機(jī)制,怎么能保證你用靜態(tài)變量時(shí)不導(dǎo)致持久代 OOM?
- 你不懂雙親委托模型,你怎么知道別人不會(huì)在線上把你的類替換掉?

學(xué)習(xí)
那必須得優(yōu)先聽培訓(xùn)課啊,畢竟名師出高徒嘛,你自學(xué)怎么能比得上大佬手把手教你?

技術(shù)選型
那必須得嚴(yán)格按照 【大廠 > 中廠 > 小廠 > 個(gè)人】 來(lái)啊。誰(shuí)敢用個(gè)人的開源項(xiàng)目?大廠才穩(wěn)定好用,比如 FastJson 就一直穩(wěn)定支持代碼注入能力,是最好的 Java 動(dòng)態(tài)化框架??胺Q十年磨一劍。
要避免重復(fù)造輪子,應(yīng)該優(yōu)先尋找可用的開源方案,很多大廠的輪子都是內(nèi)部的 KPI 項(xiàng)目,沒啥價(jià)值,比如微信團(tuán)隊(duì)完全沒必要搞 Tinker 這套東西,F(xiàn)astJson 它不能滿足需求么?

結(jié)語(yǔ)
好了,以上就是我七年的技術(shù)心得,它淺顯但實(shí)用,持續(xù)讓我能在互聯(lián)網(wǎng)寒冬和裁員潮中屹立不倒并最終成為了中國(guó)首位雙料 GDFE,希望對(duì)你也有幫助。
下期我再分享一下 Flutter 篇,歡迎關(guān)注。
歡迎多多轉(zhuǎn)發(fā),幫助你的同事提升技術(shù)水平,早日讓他成為 GDFE。
如果你也是雙料 GDFE,那下面這張圖你也許能用得上,如果是單料,那就算了,還沒來(lái)得及做。
