架構(gòu)背景與要達(dá)到的效果:
1.業(yè)務(wù)功能,可預(yù)估時(shí)間。完成
2.軟件穩(wěn)定
3.后期bug可控,可預(yù)估
4.迭代版本可擴(kuò)展,可修改
架構(gòu)背后使用的技術(shù)調(diào)研(技術(shù)選型):
1.語(yǔ)言 java還是kotlin
2.顯示模式,如View呈現(xiàn)使用xml,還是compnent,是否使用NDK算法
2.第三方SDK ,多廠商的選擇比較,兼容性,
架構(gòu)達(dá)到的目的:
1.定位問(wèn)題輸出問(wèn)題
2.解耦,而達(dá)到邏輯清晰。
3.簡(jiǎn)潔,容易閱讀
4.人員分工業(yè)務(wù)工作量
5.擴(kuò)展化
6.熱修復(fù)
架構(gòu)(業(yè)務(wù))模型
?MVVM,控制,數(shù)據(jù),與視圖展現(xiàn)之間的關(guān)系
服務(wù)進(jìn)程,日志服務(wù)進(jìn)程,微服務(wù)功能
組件化,解耦功能,達(dá)到功能獨(dú)立,人工分開(kāi),后期維護(hù)分開(kāi),微服務(wù)功能
架構(gòu)(代碼)模型
建造者模式:管理狀態(tài)數(shù)據(jù)池常量->而達(dá)到顯示控制、功能控制,可擴(kuò)展
策略模式(樹形結(jié)構(gòu)):一個(gè)功能一個(gè)總父類->子父類->子類,歸類,邏輯清晰,易控制,易閱讀。
代理模式:對(duì)同樣性質(zhì)動(dòng)作坐同樣監(jiān)控。從而讓注解起到簡(jiǎn)化代碼作用??刂?/p>
中介模式(適配器):讓解耦的數(shù)據(jù)和視圖兩個(gè)進(jìn)行交互。易控制,簡(jiǎn)潔,解耦
責(zé)任鏈模式:NEXT->NEXT,一層,一層去攔截監(jiān)控從而達(dá)到,每一層細(xì)節(jié)的問(wèn)題拋出。穩(wěn)定
PS:使用不同的模型,然而會(huì)用到,抽象類,接口,注解,反射等高級(jí)一點(diǎn)的語(yǔ)言特性。
代碼細(xì)節(jié)
業(yè)務(wù)邏輯完整
例1:交互進(jìn)入A狀態(tài)-> 操作其他->被動(dòng)跳到其他B狀態(tài)->恢復(fù)狀態(tài)A狀態(tài)到初始化->操作B (簡(jiǎn)單解法是必須完成當(dāng)前操作)
例2:交互進(jìn)入A狀態(tài)->未滿足條件->進(jìn)入等待狀態(tài)->跳轉(zhuǎn)到進(jìn)入條件許可->條件滿足->喚醒條件
根據(jù)例1,例2判斷出:
1.操作異常,需要做第一種情況圍堵,必須完成當(dāng)前? ?第二種情況,恢復(fù)當(dāng)前到初始化,跳到其他操作
2.操作條件不滿足,進(jìn)入等待,操作其他,等待被喚醒
穩(wěn)定性容錯(cuò)處理
所以需要添加容錯(cuò)處理(0.NULL,越界判斷去除 1.0,NAN 2.try,catch包容,數(shù)據(jù)注意拋出問(wèn)題)
代碼規(guī)范
1.必要注解(功能,版本)
2.拼寫規(guī)范(易閱讀)
3.一個(gè)函數(shù)小功能獨(dú)立(邏輯清晰,易閱讀)
代碼測(cè)試
偶發(fā)問(wèn)題的的解決(白盒測(cè)試)
對(duì)于偶爾問(wèn)題,測(cè)試不易復(fù)現(xiàn)。這個(gè)時(shí)候需要Android 開(kāi)發(fā)人員自己寫 UnitTest/業(yè)務(wù)測(cè)試代碼。等待問(wèn)題的拋出
PS:自己根據(jù)工作經(jīng)驗(yàn)總結(jié)編寫,存在不足地方?wohaipeng@dingtalk.com