常見問題
傳統(tǒng)的MVC架構(gòu)座韵,單體型應(yīng)用公壤,Controller職責(zé)過重 -> 平臺(tái)型架構(gòu),Controller減負(fù)商模,引入framework降低耦合度
絕對(duì)布局奠旺,屏幕適配工作比較繁瑣 -> Auto Layout
iPad和iPhone用一套界面 -> 提供兩套界面,size class
兼容模式施流,圖片有拉伸 -> 高清模式响疚,圖片不拉伸
純代碼寫界面 -> storyboard,xib瞪醋,代碼混合
編碼風(fēng)格有好幾套忿晕,缺少統(tǒng)一規(guī)范 -> 引入編碼規(guī)范,加強(qiáng)代碼review
代碼review流于形式 -> 固定時(shí)間银受,團(tuán)隊(duì)全員review
實(shí)現(xiàn)思路一人一個(gè)想法 -> 引入概要設(shè)計(jì)践盼,在實(shí)施前團(tuán)隊(duì)充分討論,觀點(diǎn)PK蚓土;可以考慮一個(gè)iOS + 一個(gè)Android宏侍,“結(jié)對(duì)設(shè)計(jì)”
trunk、branch兩個(gè)分支 -> trunk蜀漆、branch谅河、tag三個(gè)分支
開發(fā)版、正式版兩種版本 ->開發(fā)版确丢、內(nèi)部試用版绷耍、正式版三種版本
只有人工的黑盒測(cè)試 -> 引入Jekin之類的工具,由測(cè)試人員和開發(fā)人員一起鲜侥,寫單元測(cè)試褂始,自動(dòng)打包,自動(dòng)測(cè)試
沒有做語言本地化處理 -> 考慮語言本地化描函,為多語言版本做準(zhǔn)備
方案
以最小的改動(dòng)在現(xiàn)有的基礎(chǔ)上實(shí)現(xiàn)需求崎苗,盡量保持穩(wěn)定
在當(dāng)前的基礎(chǔ)上逐步重構(gòu)
Object-C + CocoaPods + Svn重寫
Swift + Carthage + Git重寫
iOS和Android統(tǒng)一編程方案
iOS先行開發(fā)狐粱,Android延遲1~3個(gè)月,無統(tǒng)一編程方案
iOS胆数、Android肌蜻、APP網(wǎng)關(guān)先討論,共同開發(fā)必尼,在概要設(shè)計(jì)蒋搜,API設(shè)計(jì)上達(dá)到統(tǒng)一
將一部分內(nèi)容用H5實(shí)現(xiàn),混合架構(gòu)判莉,這部分兩者公用
將公共部分用C實(shí)現(xiàn)豆挽,兩個(gè)平臺(tái)公用
Facebook的reactnative,阿里的weeks等JS方案
Swift券盅,據(jù)說Android將支持Swift帮哈,服務(wù)端用Swift寫已經(jīng)有人開始探索
架構(gòu)方面的考慮
Controller(場(chǎng)景scene生命周期),AppDelegate(應(yīng)用App生命周期)只做調(diào)度者渗饮,不做具體的事但汞,最好連表格的代理都不要做(代碼寫界面,用一個(gè)容器view代替controller的self.view)
以framework的形式進(jìn)行模塊劃分互站,降低耦合度私蕾,這要求升級(jí)到iOS8
引入ViewModel概念,作為界面和具體邏輯之間的轉(zhuǎn)換接口胡桃,隔離界面層踩叭,并且讓界面層的代碼盡量少,方便修改翠胰,快速應(yīng)變
將跳轉(zhuǎn)集中處理容贝,比如第三方庫routable-ios,借鑒url的做法對(duì)頁面統(tǒng)一組織
引入“微服務(wù)”概念之景,包裝一些只供外部模塊調(diào)用的“基礎(chǔ)組件”斤富,比如網(wǎng)絡(luò),數(shù)據(jù)庫锻狗,二維碼掃描等等
引入“服務(wù)概念”满力,包裝幾個(gè)跟具體業(yè)務(wù)無關(guān)的“公共業(yè)務(wù)”,比如支付轻纪,登錄注冊(cè)油额,第三方登錄,分享等等
引入“移動(dòng)網(wǎng)關(guān)”概念刻帚,作為客戶端的后端潦嘶,后端的前端,并且集成H5崇众、Android掂僵、iOS公用的邏輯航厚,筆記日志、統(tǒng)計(jì)锰蓬、黑白名單阶淘、安全等等