美學(xué)架構(gòu)演化之路

項(xiàng)目發(fā)展到現(xiàn)在已經(jīng)有一年的時(shí)間了,在這一年里,我們的crash free一直都保持的很好(99.5%+)。隨著功能的不斷增加,已經(jīng)老代碼的缺乏維護(hù),逐漸陷入一個(gè)難以維護(hù)的地步,所以需要進(jìn)一步去改善目前的架構(gòu),所以這里談?wù)勔郧暗募軜?gòu)和未來(lái)將要改善的一些方式。

開(kāi)始

最開(kāi)始的階段是完全的MVC,這種結(jié)構(gòu)下最明顯的問(wèn)題就是massive controller。當(dāng)然我們也遇到了這個(gè)問(wèn)題。

此時(shí)我們要解決的問(wèn)題主要有兩點(diǎn):

  • 龐大的數(shù)據(jù)量,超長(zhǎng)的頁(yè)面,以及數(shù)據(jù)列表間的不同組合
  • 不同頁(yè)面相同數(shù)據(jù)列表的復(fù)用

好在在開(kāi)始的時(shí)候我們就根據(jù)我們項(xiàng)目的一些特殊性進(jìn)行了思考,以及嘗試的幾種組件化方案。所以在1.1的時(shí)候已經(jīng)明確并且解決了這個(gè)問(wèn)題。

C-MVCs

美學(xué)的表現(xiàn)層組件化之路文章中描述了我們使用DDComponent拆分組件化的方式。

這一次解決了單個(gè)頁(yè)面的多功能模塊拆分問(wèn)題,增加了復(fù)用性,也奠定了未來(lái)半年的穩(wěn)定開(kāi)發(fā)基礎(chǔ)。

c_mvcs.png

組件統(tǒng)一化

隨著時(shí)間的推移,組件越來(lái)越多,導(dǎo)致同一種資源(比如User)擁有多種不同的component,每個(gè)人不同地方都使用了不同的代碼,導(dǎo)致維護(hù)越來(lái)越困難。

所以需要將同一種類(lèi)型的組件進(jìn)行統(tǒng)一化和規(guī)范化。將目前所使用的組件分為特例組件和通用組件,并盡量在這兩個(gè)范圍內(nèi)取用。同時(shí)每個(gè)組件都是經(jīng)過(guò)幾輪黑盒測(cè)試的,所以基本上不太可能出現(xiàn)bug。

但是這樣依然會(huì)有問(wèn)題,在目前應(yīng)用調(diào)整的期間,很多組件都需要重寫(xiě),重寫(xiě)的質(zhì)量就很依賴(lài)個(gè)人了,那么我們統(tǒng)一后的組件依然難以保持很高的質(zhì)量和通用性。

單元測(cè)試

雖然經(jīng)過(guò)上述幾次的改善,目前已經(jīng)沒(méi)有太大問(wèn)題。但其中的隱患一直沒(méi)有被消除,而且在功能的大量增加和人員的變動(dòng),這種隱患就更加明顯了。所以想要在我們的邏輯層加上單元測(cè)試。

關(guān)于實(shí)現(xiàn)方式之前的文章已經(jīng)討論過(guò)了,思路就是拆分Controller層,基本上是采用MVP,是否需要輔助Re方案還要繼續(xù)觀察。

c.png

那么最后我們的結(jié)構(gòu)理想中應(yīng)該是這樣

c_mvcs_mvps.png

這樣我們將一整個(gè)ViewController拆分為多個(gè)子組件,子組件保持可測(cè)性。

這是目前我們需要去改進(jìn)的。

模塊化

相信,經(jīng)過(guò)上述的改善之后,我們的應(yīng)用應(yīng)該會(huì)趨于一個(gè)比較穩(wěn)定的時(shí)期。那時(shí)的功能也會(huì)比現(xiàn)在多很多,那么就需要模塊化管理,這是后話(huà)了,在一段時(shí)間內(nèi)應(yīng)該還到達(dá)不了如此量級(jí)。

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

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,355評(píng)論 25 708
  • 前言: 本文轉(zhuǎn)自前同事casa的博文,這篇文章是基于runtime實(shí)現(xiàn)的iOS組件化方案,其實(shí)iOS組件化方案基本...
    monkey01閱讀 1,738評(píng)論 1 2
  • 昨天有幸跟一位朋友聊天,我們談到一些企業(yè)的運(yùn)營(yíng)問(wèn)題,有些企業(yè)表面上看起來(lái)很風(fēng)光,但是實(shí)質(zhì)上卻是虧損的,用不了多久就...
    零叫獸閱讀 495評(píng)論 0 0
  • 猜,鏡頭和眼睛看到的,是一樣嗎?
    就就就這樣吧閱讀 315評(píng)論 0 0
  • 引自任曙林老師的《八十年代中學(xué)生》,原文配字如此:1985年4月,北京171中學(xué),王琳和一位男生隔著幾張課桌低頭看...
    tuye1234閱讀 384評(píng)論 0 1

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