描述
對于做開發(fā)的我們不知道對框架的重要性理解的有多深摊沉。我先談?wù)勎业母惺艽V印N易罱驗(yàn)槟承┰驌Q工作恳蹲,接手了一個(gè)別人寫的項(xiàng)目,于是地獄般的生活開始了碰缔。我大概說一下接手項(xiàng)目的幾點(diǎn)讓我無法忍受的點(diǎn)账劲。
- 沒有代碼規(guī)范,寫的隨心所欲沟优,想空幾個(gè)空格就空幾個(gè)幽告,想空幾個(gè)空格就空幾個(gè)空格。
- 沒有架構(gòu)的概念颁糟,修改代碼找不到對應(yīng)的代碼寫在哪里榛瓮。
- 基本的MVC的架構(gòu)模式都不成型铺董,沒有model的概念,全是NSDictionary漫天飛禀晓,數(shù)據(jù)傳遞一條一條的傳精续。
- table 的 cell 不復(fù)用,UI直接寫在cellforRow的方法中粹懒,直接add到cell上重付,構(gòu)建的cell里面空空如也。
- 平均每個(gè)VC里面的代碼得有2k+凫乖,維護(hù)特別不方便确垫,代碼很難定位。
大概就列這幾條其他的就不再吐槽了帽芽,首先我想說的是這樣的代碼誰接手了能受得了删掀。于是我就決定在開發(fā)至于從新搭建一個(gè)框架。一方面是自己算是學(xué)習(xí)成長了导街,另一方面也把項(xiàng)目重新構(gòu)建了披泪。
好了回歸正題,首先說一下MVC架構(gòu)吧搬瑰,這個(gè)我覺得的大家都知道款票,老生常談的問題了我就不贅述了。有不是很清楚的小伙伴可以點(diǎn)上面的鏈接了解一下泽论。
接下來我們說一下基于MVC搭建框架相關(guān)的東東徽职。這是我參考別的文章中的架構(gòu)圖搭建的項(xiàng)目。
架構(gòu)圖:
架構(gòu)原則:易讀性佩厚、易維護(hù)性姆钉、易擴(kuò)展性。
搭建目錄結(jié)構(gòu)
目錄如圖抄瓦,從上到下這樣搭建App的目錄結(jié)構(gòu)潮瓶。用pod管理第三方的框架,部分進(jìn)行封裝钙姊,應(yīng)對項(xiàng)目中的需求毯辅。降低耦合度并且節(jié)省了手動配置引入各種庫的麻煩。
文件詳解:
1煞额、AppDelegate是應(yīng)用的代理思恐,應(yīng)用級的事件都委托它處理沾谜,包含啟動退出、推送等事件胀莹,初始化基跑,以及IM、支付等第三方的回調(diào)描焰,這使得AppDelegate內(nèi)代碼龐大媳否,錯(cuò)綜復(fù)雜,十分不利于閱讀和維護(hù)荆秦,因此新增一個(gè)AppDelegate+AppService類別篱竭,用來處理生命周期之外的業(yè)務(wù),AppDelegate作為事件入口步绸,具體實(shí)現(xiàn)直接調(diào)用類別里的方法掺逼,為AppDelegate減負(fù)。
2瓤介、我搭建的這個(gè)是分為首頁坪圾、科普、消息惑朦、我的四個(gè)模塊。每個(gè)模塊是按著MVC的架構(gòu)搭建的漓概,Resource是用來存儲當(dāng)前模塊中需要用到的資源漾月。Other是用來存儲一些其他的資源,如果你想做分散是網(wǎng)絡(luò)請求的話就將這文件夾改名為Service胃珍。然后將網(wǎng)絡(luò)請求的文件放在這里梁肿。
3、Manager的定義是全局基礎(chǔ)服務(wù)觅彰,通常使用類方法或者單例來實(shí)現(xiàn)吩蔑,主要包含對應(yīng)用、用戶的管理和服務(wù)填抬,例如網(wǎng)絡(luò)狀態(tài)監(jiān)聽烛芬,廣告頁應(yīng)用介紹頁,統(tǒng)計(jì)單例等飒责;用戶快速登錄退出操作以及登錄狀態(tài)的獲取等赘娄。
4、Utils文件夾內(nèi)主要包含全局通用工具宏蛉,來源于對三方框架的二次封裝遣臼,或是自己寫的工具類。
5拾并、Base文件夾用來存放項(xiàng)目的基類揍堰,基類作用包含一些定制化的內(nèi)容鹏浅,例如頁面樣式,空數(shù)據(jù)頁面等屏歹,使用基類來實(shí)現(xiàn)隐砸,可以統(tǒng)一控制,利于維護(hù)西采,減少冗余凰萨。有寫不需要的可以刪除掉。
6械馆、放一些第三方的類庫胖眷,有一些pod中沒有的∨椋或者自己自己封裝的類珊搀,還有的需要我們手動修改里面源碼來滿足項(xiàng)目需求的類。
7尾菇、項(xiàng)目中通用的全局宏定義境析,我暫時(shí)定義了四個(gè)可以根據(jù)需求添加。
UtilsMacros:通用的工具宏派诬,如:屏幕的寬高劳淆,版本的判斷,機(jī)型的判斷默赂,計(jì)算nav沛鸵,tab,statusBar的高度等缆八。
URLMacros:關(guān)于項(xiàng)目中接口的宏曲掰,正式環(huán)境,測試環(huán)境的域名奈辰,還有個(gè)接口的路徑栏妖。方便統(tǒng)一管理和維護(hù)。
FontAndColorMacros:項(xiàng)目中常用的字號奖恰,色值吊趾,顏色的十六進(jìn)制轉(zhuǎn)換等,字體的自重定義瑟啃。
KeyMacros:第三方庫的key趾徽,和一些通用的關(guān)鍵key,通知的key翰守。
8孵奶、資源文件,系統(tǒng)中通用的一些資源可放在這個(gè)文件夾中蜡峰。但是icon的資源要放在Assets中管理了袁。因?yàn)檫@里面可以對相應(yīng)的icon做一寫處理朗恳,比如:設(shè)置圖片的縮放,可重復(fù)復(fù)制的區(qū)域等载绿。就是 Show Slicing或Show OverView
粥诫,不了解這塊的可以點(diǎn)擊直通車??。
9崭庸、CocoaPods是iOS項(xiàng)目的依賴管理工具,開發(fā)的一般都知道這個(gè)我就不過多贅述了怀浆。
總結(jié)
項(xiàng)目中還有好多細(xì)節(jié)的內(nèi)容沒有填好后期會不斷的完善,大家有啥意見可以盡情的提出來必虛心接受怕享。也可以推薦好用的庫給我哦执赡。另外說一下YYKit是非常好用且全面的組件庫,遇到問題先去里面找一找函筋,也許會有驚喜哦沙合。后期我會上傳demo。歡迎start跌帐。