前言
本人剛剛畢業(yè)半年,對(duì)于開(kāi)發(fā)也處于剛剛起步階段,正所謂一葉障目,由于目前知識(shí)和見(jiàn)識(shí)有限,很多只是個(gè)人看法,如果有大神可以多多交流~待到將來(lái)技術(shù)更進(jìn)一步,回頭看看或許也是一番滋味吧!
什么是架構(gòu)
什么是架構(gòu)?之前有人問(wèn)我這么個(gè)問(wèn)題,我說(shuō),架構(gòu)就是iOS項(xiàng)目的整體搭建,前段后臺(tái)的整體框架設(shè)計(jì)。他說(shuō)太籠統(tǒng)了。那什么是架構(gòu)呢,架構(gòu)就是整體結(jié)構(gòu)與組件的抽象描述。也就是說(shuō),一個(gè)公司里的員工也可以按照不同組織架構(gòu),比如按照男女,再按照部門(mén),或者直接按照部門(mén),還有就是按照部門(mén),然后按入職年份等等。
為什么要架構(gòu)
每個(gè)從事iOS開(kāi)發(fā)的其實(shí)都有自己的一套架構(gòu)方案,只是有些方案是好的,有些不咋滴。一個(gè)好的架構(gòu),對(duì)于多人開(kāi)發(fā)的團(tuán)隊(duì)是十分重要的。
比如我們的項(xiàng)目,安卓和iOS是一整套基本統(tǒng)一的框架,所有包結(jié)構(gòu)都是類(lèi)似的,在移動(dòng)端如果有什么改動(dòng),兩邊也是十分容易去交流。
我的項(xiàng)目結(jié)構(gòu)
相對(duì)來(lái)說(shuō),我是iOS開(kāi)發(fā),所以對(duì)iOS接觸的比較多。用pods管理第三方庫(kù),整體框架是公用工具類(lèi),本地?cái)?shù)據(jù)庫(kù)管理和緩存,Model,View,Viewcontroller,ViewModel。當(dāng)然在View,model,Viewcontroller也會(huì)根據(jù)模塊的不同再細(xì)分。當(dāng)然,還有一個(gè)config里放著一些全局的,但是將來(lái)會(huì)改變的代碼,比如網(wǎng)絡(luò)請(qǐng)求地址等。

代碼的耦合度對(duì)于項(xiàng)目的整體好壞是十分重要的,現(xiàn)在流行的模塊化就是降低代碼直接的耦合度。目前我們的項(xiàng)目里就是把一些經(jīng)常使用的函數(shù)封裝成工具類(lèi),這樣可以供以后或者你的同事使用。比如經(jīng)常使用的就算文字高度寬度,圓角處理等。其實(shí)就是一種封裝的思想,盡可能的將一些可重用東西封裝出去,一個(gè)好處是代碼的利用率高了很多,還有個(gè)好處就是你的Viewcontroller會(huì)'瘦'很多。
對(duì)于多人開(kāi)發(fā),有時(shí)候你的一個(gè)ViewController會(huì)被他人調(diào)用,或許你的Viewcontroller有三種或者四種不同的調(diào)用方式。有一種方式,就是用一個(gè)Navigation導(dǎo)航類(lèi)統(tǒng)一管理。如下圖:

如果他人調(diào)用或者你要修改什么,直接通過(guò)這個(gè)類(lèi),這樣方便很多,也降低了代碼的耦合度。
還有一種方法就是傳入字典的方式,將需要傳入的參數(shù)轉(zhuǎn)化成字典,然后再Viewcontroller里接收,但是這樣的話(huà),需要一份文檔去做介紹字典的key怎么設(shè)置,貌似有一種模塊化的方式是這樣處理的。