iOS漫談——對于項目架構(gòu)的思考
又一次的版本更新上架,心情容不得片刻舒緩纫雁,新的迭代任務(wù)又明白的擺在桌面上窖维。今年上半年自己琢磨完ReactiveCocoa
之后,對手上了項目做了MVVM
架構(gòu)的嘗試您觉,當(dāng)時自我感覺效果還不錯,代碼之間的關(guān)系確實變得清楚了授滓,并且有更加多的機會去進行單元測試琳水,但是在新的一年,回頭再去思考自己當(dāng)時的架構(gòu)般堆,依舊會發(fā)現(xiàn)很多的問題在孝,例如雖然邏輯清晰,但是并沒有完全解耦淮摔,一些界面任務(wù)的處理私沮,依舊通過RAC
返回到View
層去處理。只是Controller
更干凈了和橙,心里自己覺得舒服罷了仔燕。
之后又經(jīng)手了現(xiàn)在這個項目,在最近不斷的工作不斷的熟悉業(yè)務(wù)代碼的同時魔招,近日來對于架構(gòu)方面的思考也不少晰搀。這個項目模塊之間功能清晰,業(yè)務(wù)A和業(yè)務(wù)B之間耦合較少仆百,但是在未來的日子里厕隧,公司又有可能新啟動項目,不出意外會使用到跟當(dāng)前項目相同的模塊俄周,而如何能節(jié)約時間吁讨,亦或是在當(dāng)前項目上調(diào)優(yōu)架構(gòu),是我最近思考的主題峦朗。
在了解體會了項目中越來越多的缺點之后建丧,我的腦子里首先蹦出來的就是模塊化開發(fā)這個概念,這個概念在腦子里成形之后波势,我閱讀了大量的他人組件化開發(fā)的源碼翎朱,從阿里大神劉坤的博客里再到蘑菇街的組件化之路橄维,大家再做iOS
組件化開發(fā)時,似乎都或多或少的受到了路由這個概念的影響拴曲,這個概念是在各個模塊之間争舞,或者每個頁面之間都用url
來進行跳轉(zhuǎn),具體的話可以去查看JLRoute
這個框架澈灼,是一個把URL
跳轉(zhuǎn)使用的非常好的一個框架竞川,很理想。
但是我認(rèn)為URL
的路由概念雖好叁熔,但是在App啟動時需要實例化各組件的模塊委乌,說白了就是有個類似注冊各個模塊的行為,而在組件化的過程中荣回,注冊URL
并不是充分必要條件遭贸,會造成不必要的內(nèi)存常駐,如果是注冊Class
心软,內(nèi)存常駐會小一點壕吹,如果是注冊實例,組件多了糯累,常駐的內(nèi)存也就更大了算利。
上述是第一點原因,其二泳姐,我認(rèn)為當(dāng)前團隊,當(dāng)開發(fā)人員去切換到路由模式暂吉,學(xué)習(xí)成本過大胖秒,我并不像在之前的公司,在軟件團隊里是一個決策者慕的,當(dāng)前我只是一個普通的程序員阎肝,改良架構(gòu)這種事情的推動力度不夠大,所以暫時先拋開組件化開發(fā)的這個想法肮街。
其三风题,目前項目的時機未到,當(dāng)前的項目還沒有到相對完善的時候嫉父,迭代的壓力也比較大沛硅,就目前的項目狀況來看,似乎常規(guī)的開發(fā)模式還是可以沿用一段時間的绕辖,畢竟組件化開發(fā)的成效在小團隊模式單項目的模式下不會體現(xiàn)的特別明顯摇肌,反而團隊越大,組件開發(fā)的必要性越強仪际。并且當(dāng)前團隊在用Swift
開發(fā)項目围小,如果希望最優(yōu)的模塊化開發(fā)昵骤,還是需要依賴到OC的runtime
的。
至于如何進行組件化開發(fā)肯适,我這里也就不贅述了变秦,網(wǎng)上優(yōu)秀的團隊博客說了很多,比如阿里念紀(jì)框舔、微信閱讀蹦玫、蘑菇街、casatwy等等。每一個都對組件化有獨到的見解珊豹,而我現(xiàn)在能談得所有見解蝗拿,只不過是站在這些巨人的肩膀上汲取到的一點皮毛,真正的感想饺窿,還需等實踐之后再來談。
最近就打算寫個小模塊移斩,把這個模塊完全封裝成一個組件肚医,植入到App中。
對于緩存和數(shù)據(jù)持久化向瓷,我也想到了一個似乎可以更好處理肠套,更干凈的方案,等到測試完成猖任,再寫個文章單獨講述吧你稚。