談一下自己對App的整體框架的看法傲醉,感覺就是建立一套規(guī)范,讓我們的開發(fā)思路更清晰明了呻率,寫代碼更高效硬毕,代碼更易于拓展和維護(hù);我感覺一般就是考慮項(xiàng)目架構(gòu)礼仗、功能模塊吐咳、需要用到的技術(shù)、框架元践、需要用到的界面控件韭脊、數(shù)據(jù)的存儲(chǔ)和需要的一些工具類和測試工具;
了解APP的功能
設(shè)計(jì)App的整體框架单旁,首先要清楚我們要做的是什么沪羔,清楚需要做哪些功能和一些細(xì)節(jié),這樣才能保證我們之后的設(shè)計(jì)和決定是正確的象浑;
項(xiàng)目架構(gòu)
常見的架構(gòu)有MVC蔫饰、MVP、MVVM愉豺,項(xiàng)目的架構(gòu)一般是根據(jù)項(xiàng)目的大小和功能來決定的篓吁。項(xiàng)目比較小,功能比較簡單蚪拦,也不準(zhǔn)備后期繼續(xù)迭代開發(fā)杖剪,選擇MVC簡單點(diǎn)快速完成開發(fā)就可以了;稍微復(fù)雜點(diǎn)驰贷,大一點(diǎn)的項(xiàng)目可能就需要MVP或者M(jìn)VVM來開發(fā)盛嘿,界面和數(shù)據(jù)分離,保證代碼是清晰干凈的饱苟,易于維護(hù)孩擂;要是項(xiàng)目的業(yè)務(wù)比較復(fù)雜狼渊,業(yè)務(wù)變化較為頻繁箱熬,可能選擇MVP-clean类垦,每個(gè)業(yè)務(wù)單獨(dú)寫一個(gè)用例,保證代碼可復(fù)用性城须、靈活性蚤认;要是界面數(shù)據(jù)是經(jīng)常刷新變化的,使用MVVM自動(dòng)刷新也挺好糕伐;要是項(xiàng)目很大砰琢,那可能使用組件化開發(fā)比較好...其實(shí)也取決于其他開發(fā)成員對架構(gòu)的理解和使用情況
開源框架
網(wǎng)絡(luò)請求
根據(jù)項(xiàng)目的功能來選擇一些框架,比如接口多是使用HTTP的話良瞧,選用Retrofit
或者其他網(wǎng)絡(luò)框架陪汽,即時(shí)通訊可能使用Mina
或者其他socket框架;
接口設(shè)計(jì)和加密
會(huì)考慮一下接口如何設(shè)計(jì)褥蚯,制定一個(gè)統(tǒng)一的協(xié)議挚冤;同時(shí)數(shù)據(jù)的加密也是需要考慮,使用什么的方法加解密
圖片加載
網(wǎng)絡(luò)圖片加載比較多可能選擇一下Glide赞庶、Picasso训挡、Fresco等圖片加載框架,有動(dòng)態(tài)圖片可能選擇Glide歧强、android-gif-drawable
數(shù)據(jù)庫
數(shù)據(jù)存儲(chǔ)澜薄,數(shù)據(jù)少可能使用OrmLite這種簡單易用的就行,數(shù)據(jù)多了考慮速度快的框架比如Realm摊册;
熱門框架
是否使用比較熱門的技術(shù)來編寫代碼肤京,比如rxjava、eventbus茅特、Dagger2蟆沫、Kotlin
界面布局
主要是項(xiàng)目里面有沒有什么特殊的控件,有沒有使用什么動(dòng)畫温治,或者material design饭庞,可能一些界面還需要用到網(wǎng)頁
技術(shù)難點(diǎn)
先看一下需要用到哪些技術(shù),能實(shí)現(xiàn)的熬荆,規(guī)劃一下怎么去實(shí)現(xiàn)舟山;沒法實(shí)現(xiàn)的比如地圖、支付什么的卤恳,考慮使用什么三方SDK累盗;
功能模塊
根據(jù)業(yè)務(wù)劃分一下功能模塊
測試和優(yōu)化
使用一些測試的工具來幫助開發(fā),比如內(nèi)存泄漏檢測LeakCanary突琳、界面卡頓檢測BlockCanary若债;運(yùn)行時(shí)出錯(cuò)如何收集錯(cuò)誤;如何檢測發(fā)生了ANR拆融;還有統(tǒng)計(jì)用戶愛好習(xí)慣什么的蠢琳;就是如何完善APP
框架搭建
新建項(xiàng)目啊终,先分一下層,集成一些基礎(chǔ)類傲须,集成一些工具類蓝牲;
代碼規(guī)范
代碼規(guī)范什么的就不用講了,其實(shí)每個(gè)項(xiàng)目都一樣泰讽;
結(jié)語
這些都是自己的一些看法例衍,肯定還有一些沒有考慮到的地方,會(huì)不斷的更新已卸;有時(shí)間也會(huì)不斷的完善每一步具體的內(nèi)容