在重構(gòu)HBKit中遇到的一系列架構(gòu)抉擇問題

HBKit \ HuobanKit是什么?

HBKit最早由HuobanKit演變而來,我將HuobanKit中跟業(yè)務(wù)無關(guān)的代碼抽離出來,精簡成基本的網(wǎng)絡(luò)框架和數(shù)據(jù)庫(CoreData)框架兩部分。只在打造沒有業(yè)務(wù)的輕便框架,可以在幾分鐘內(nèi)配置并使用。

本框架由Swift 3.0+進行重寫,網(wǎng)絡(luò)請求部分針對Alamofire進行二次封裝,提取出可以方便快捷使用的網(wǎng)絡(luò)請求GET/ POST/ PUT/ DELETE的幾種動作。并支持網(wǎng)絡(luò)請求結(jié)束之后以最精簡的回調(diào)返回獲取結(jié)果。



問題:

在重構(gòu)iOS HBKit之前,由于老的工程項目文件在使用MVC時,大量的邏輯代碼在Controller層出現(xiàn)if和邏輯摻雜的問題,這樣讓我們原本的核心邏輯漸漸趨向于難于修改的狀態(tài),這樣的狀態(tài)導(dǎo)致開發(fā)小組在新增一個代碼邏輯時出現(xiàn)不小心牽動其他邏輯導(dǎo)致BUG出現(xiàn)的問題。而且這樣的問題隨著工程文件的越來越大,產(chǎn)品邏輯的越來越復(fù)雜,問題也成倍的增長。

我們有什么樣架構(gòu)設(shè)計方案來面對未來激進式的產(chǎn)品邏輯開發(fā)呢,這是需要我們解決的問題。


思路演變歷程:

架構(gòu)思路第一次演變

MVC -> MVP -> MVVM?

MVVM主要是借助IOS本身的KVO特性,通過創(chuàng)建中間層ViewModel來管理View層。而KVO代碼編寫由于在XCode當(dāng)中有些松散,故引入ReactiveCocoa的第三方代碼庫,來解決KVO松散的問題?!禡VVM + ReactiveCocoa》http://www.cocoachina.com/ios/20150526/11930.html

而后由于在工程目錄結(jié)構(gòu)中,需要讓團隊開發(fā)人員在開發(fā)邏輯代碼時盡可能避免互相沖突,想要代碼目錄結(jié)構(gòu)從

Models/

ViewControllers/

ViewModels/

Views/

這樣的代碼結(jié)構(gòu)能將獨立的業(yè)務(wù)模塊進行獨立劃分。

繼而尋找到一篇文章:《新版Uber App移動架構(gòu)設(shè)計》Riblets架構(gòu)描述 https://zhuanlan.zhihu.com/p/24489480

這篇文章講述的是一個老工程項目在面對大團隊開發(fā)時如何去做到互補影響邏輯的架構(gòu)方案,名為Riblets

架構(gòu)思路第二次演變:

MVC -> MVP -> MVVM -> Riblets?

延伸閱讀

《iOS 組件化 —— 路由設(shè)計思路分析》

http://www.itdecent.cn/p/76da56b3bd55

《使用VIPER構(gòu)建iOS應(yīng)用》

http://www.cocoachina.com/ios/20140703/9016.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容