1.架構(gòu)無關(guān)語言與平臺(tái)
架構(gòu)是基于編程原則而來的呼巴。這些指導(dǎo)原則有SOILD原則或者設(shè)計(jì)模式,它們很穩(wěn)定并且能應(yīng)用于不同的語言和平臺(tái)。投入時(shí)間學(xué)習(xí)架構(gòu)是非常值得的寸认。它不僅幫助我們?cè)O(shè)計(jì)更好的架構(gòu)同時(shí)也能提高我們的編程技巧。
2.關(guān)于MVP/MVVM的困惑
MVP和MVVM的職責(zé)就是為啦將UI與邏輯分離串慰。我們使用Presenter/ViewModel將邏輯代碼從View(Activity/Fragment)中分離出來偏塞。剩下的Model(M)的任務(wù)便是提供數(shù)據(jù)給Presenter、ViewModel.
我經(jīng)衬B看到開發(fā)者費(fèi)勁地使用interfaces和observers來實(shí)現(xiàn)Presenter或者ViewModel烛愧,過多了則是一種干擾。我認(rèn)為把VP/VVM當(dāng)做整個(gè)app的架構(gòu)是錯(cuò)誤的。MVP/MVVM作為一種架構(gòu)模式扮演啦很重要的角色怜姿,但是作為一個(gè)app的架構(gòu)卻不僅僅是ui分離慎冤。
3.架構(gòu)是重要的但不是必要的
在一個(gè)Android開發(fā)者的進(jìn)化之旅中,架構(gòu)學(xué)習(xí)是在后期才開始的沧卢。其中一個(gè)原因便是沒有架構(gòu)的情況下我們的應(yīng)用依然能很好地工作蚁堤,所以我們?yōu)槭裁催€要學(xué)花時(shí)間呢?
當(dāng)我們經(jīng)歷幾個(gè)版本處于一團(tuán)糟的時(shí)候才去想架構(gòu)但狭,此時(shí)已經(jīng)太遲啦披诗。我們繼續(xù)任由這種混亂的情況,我們才開始認(rèn)識(shí)到架構(gòu)的必要性立磁。
4.架構(gòu)提高可變性
誠(chéng)然我們無法預(yù)見我們應(yīng)用未來的樣子呈队,但是一個(gè)好的架構(gòu)會(huì)提供足夠的靈活性來適應(yīng)未知的變化。
5.架構(gòu)不需要特殊的知識(shí)
一個(gè)好的開發(fā)者自然而然地會(huì)去設(shè)計(jì)架構(gòu)唱歧,和第一點(diǎn)有些類似宪摧,在此重申一下。
6.架構(gòu)需要紀(jì)律和耐心
架構(gòu)就像一棵樹颅崩,我們不能再種植的當(dāng)天收獲果實(shí)几于,我們需要時(shí)間和努力去設(shè)計(jì)架構(gòu),這也是個(gè)持續(xù)的過程沿后。應(yīng)用的每一個(gè)變更都需要我們?cè)趯?shí)現(xiàn)之前深思一下沿彭。
對(duì)應(yīng)用架構(gòu)危害最大就是我們開始走捷徑的時(shí)候。我們?cè)S下的承諾將會(huì)一次又一次地被放棄尖滚。
7.Google Architecture components
8.我們不用努力去成為一個(gè)軟件架構(gòu)師
每一個(gè)軟件架構(gòu)師都是一個(gè)開發(fā)喉刘,反過來則不一樣。
9.架構(gòu)的好處
其中一個(gè)優(yōu)點(diǎn)便是可變性熔掺。如果我們合理分離各個(gè)組件饱搏,并且規(guī)范組件之間的通信,那么增加新特性或者改變需求將會(huì)變得容易和快速置逻。
翻譯自:10 things every Android app developer should know about Architecture