【iOS】用運(yùn)籌思想,將M層代碼優(yōu)化的方案--Model

新入職一家公司,項(xiàng)目是從外包公司接回來(lái)的,如大家常見(jiàn),代碼亂,問(wèn)題多。

正向邏輯走不通,還有很多功能未完善,連玩具都算不上。而上線日期又近在眼前。

據(jù)在濟(jì)南交接的同事分享,外包的iOS曾坦言:代碼你們拿回去得慢慢優(yōu)化。

。。。

這句話好有深意。

我還有一個(gè)小伙伴,現(xiàn)在代碼到了我倆手上,除了盡快完成剩余的開發(fā)工作,工程里還藏著多到數(shù)不清的bug。

領(lǐng)導(dǎo)追問(wèn).jpg

既然受任于公司初創(chuàng)之際,奉命于代碼崩潰之間。

按照工作習(xí)慣,先畫出一張思維導(dǎo)圖。

商城結(jié)構(gòu)圖

就是這么簡(jiǎn)單,基本業(yè)務(wù)走通就可以。

然而時(shí)間有限,開發(fā)要繼續(xù),bug要改,框架得整理(不整理根本沒(méi)法寫)。

業(yè)務(wù)要跑通,Model層必須挨第一刀。

現(xiàn)在是用HandyJSON解析數(shù)據(jù),網(wǎng)絡(luò)請(qǐng)求是Alamofire+Moya。

有Moya規(guī)范,請(qǐng)求相對(duì)好些。唯獨(dú)數(shù)據(jù)模型,就像是一群沒(méi)人管的野孩子,沒(méi)人認(rèn)識(shí),不知道他們干啥。

攤手.jpg

語(yǔ)文老師曾經(jīng)說(shuō)過(guò),遇到事情我們要學(xué)會(huì)借古通今。

以銅為鑒,可以正衣冠;以古為鑒,可知興替;以人為鑒,可明得失。

想了一下古人,還真有這樣一個(gè)故事:

丁渭挖溝:

公元1015年,北宋京城汴京(今河南省開封市)皇宮失火,將皇宮燒成廢墟.

宋真宗命丁渭主持修復(fù)皇宮的工程.

丁渭首先把皇宮前的大街開挖成一條大溝,取土燒磚、燒瓦;

再把京城附近的沛水引進(jìn)大溝內(nèi),使運(yùn)送建筑材料的船只直抵宮前;

竣工后又把廢棄的磚瓦和廢土填人溝內(nèi),然后修復(fù)原來(lái)的大街.

這一統(tǒng)籌施工安排,可謂“舉一役而三得”

順著故事結(jié)構(gòu),可以把它轉(zhuǎn)換成以下JSON:

丁渭挖溝:{

????????起因:公元1015年,北宋京城汴京(今河南省開封市)皇宮失火,將皇宮燒成廢墟

????????背景:宋真宗命丁渭主持修復(fù)皇宮的工程.

? ? ? ? 內(nèi)容:{

????????????????準(zhǔn)備:丁渭首先把皇宮前的大街開挖成一條大溝,取土燒磚、燒瓦

????????????????施工:再把京城附近的沛水引進(jìn)大溝內(nèi),使運(yùn)送建筑材料的船只直抵宮前

????????????????竣工:竣工后又把廢棄的磚瓦和廢土填人溝內(nèi),然后修復(fù)原來(lái)的大街

????????}

????????總結(jié):這一統(tǒng)籌施工安排,可謂“舉一役而三得”

}

目前我的項(xiàng)目也有相似之處,比如:事情很重要,時(shí)間很緊迫,只重構(gòu)Model層。

emmmmmmmmmmmmm...

吃了幾包豆腐干、幾塊旺旺雪餅、兩個(gè)小西瓜、三根辣條之后,靈感來(lái)了。

根據(jù)上方JSON,Model的重構(gòu)工作提煉成了這樣:

Model重構(gòu):{

????????起因:剛?cè)肼?,代碼亂,寫不下去了

????????背景:項(xiàng)目要上線,老子想表現(xiàn)

????????內(nèi)容:{

? ? ? ? ? ? ? ? 準(zhǔn)備:做一套無(wú)縫過(guò)渡的替代方案,用命名空間劃分職能,用別名兼容調(diào)用Model的代碼

????????????????施工:把這些調(diào)皮的孩子們都抓到一塊,起個(gè)好名字,搞清楚他們干啥

????????????????竣工:沒(méi)人要的野孩子就地kill,多胞胎要kill到只剩一個(gè)

????????}

????????總結(jié):事后還可以寫一篇裝逼文

}

重點(diǎn)就是“內(nèi)容”里的三步。

之前亂七八糟的Model就不放圖了,我也沒(méi)截。

直接進(jìn)入重構(gòu):

代碼功能劃分是根據(jù)不同業(yè)務(wù)來(lái)寫的

只展示部分模塊

然后用extension給這些功能模塊填進(jìn)Model

實(shí)現(xiàn)
實(shí)現(xiàn)

在外面調(diào)用這些Model時(shí),順著M一直用點(diǎn)語(yǔ)法補(bǔ)全寫下去就OK了

提示

為了更方便查看,可以給Model上方添加 /// 格式的注釋。

替換的過(guò)程中,為了快速高效的完成整理,其他地方的代碼一律不動(dòng)。

最后一個(gè)小問(wèn)題,類名換了,其他地方代碼不動(dòng)?

對(duì)滴!因?yàn)槲矣昧藅ypealias 給他們都單獨(dú)創(chuàng)建了別名。

我的小伙伴也在開發(fā),為了防止git提交沖突或者引起別的地方bug,非model的文件我先不動(dòng)。

部分代碼

數(shù)據(jù)模型就是這樣一個(gè)個(gè)整理的,將在后面工作中逐步把別名替換掉。

本篇END--

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 終要給自己留一個(gè)有念想的地方 希望有生之年簡(jiǎn)書都在 你也在。
    李康有為閱讀 303評(píng)論 0 0
  • 每日抄經(jīng),平安幸福, 每日祈福,普渡眾生, 每日更簡(jiǎn),點(diǎn)滴積福 期末考試結(jié)束,休息兩天。兒子今天早上第一天上...
    好心情2丶0閱讀 194評(píng)論 0 2
  • 一攬紅葉樹,飄落風(fēng)宛城。 清明見(jiàn)日底,桃花十里香。 風(fēng)定落花處,正見(jiàn)抬頭時(shí)。 ...
    住我心里閱讀 255評(píng)論 0 0

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