# 項(xiàng)目結(jié)構(gòu)
---
我也要寫一本iOS的書。
#開門一步
一個(gè)項(xiàng)目開始大約是什么樣的哪。
不談寫項(xiàng)目需求分析,項(xiàng)目設(shè)計(jì)之類的。
一般寫iOS app 規(guī)劃好,pod init, 然后建幾個(gè)文件夾,搞個(gè)項(xiàng)目結(jié)構(gòu)出來。
#怎么看招來的人是不是新手?
第一眼先看看項(xiàng)目結(jié)構(gòu)。一般倉(cāng)促學(xué)的或者倉(cāng)促寫的項(xiàng)目結(jié)構(gòu)就不一定什么樣了。為什么項(xiàng)目結(jié)構(gòu)重要,項(xiàng)目結(jié)構(gòu)關(guān)系到后續(xù)可讀性,可修改性。
#怎么看招來的人是不是科班的?
手寫代碼,操作系統(tǒng)之類的基礎(chǔ)知識(shí)是一點(diǎn)。代碼review也是一個(gè)很重要的一點(diǎn),上學(xué)沒背下來也聽過,軟件工程一般都默寫過。
可讀性
可修改性
可擴(kuò)展性
安全性
#言歸正傳
##工程目錄結(jié)構(gòu)
這個(gè)就是拋磚引玉一下,這篇主要就是告訴你寫項(xiàng)目要有一個(gè)項(xiàng)目結(jié)構(gòu)的觀念
Config 放配置文件,有的項(xiàng)目里面叫(Macro),常見的設(shè)置宏,設(shè)置網(wǎng)址,設(shè)置開關(guān),比如兩個(gè)組客戶端與后端有進(jìn)度差異或者上線順序問題。
Sences 有的人叫Main,ViewControllers,Businsess什么的里面就是根據(jù)業(yè)務(wù)分開,Home,Chat,Login,PersonCenter。每個(gè)業(yè)務(wù)模塊下有MVC。Model,View,Controller。或者M(jìn)VVM
Model 有g(shù)lobal的Model和子模塊里的Model可見性不同。主要是請(qǐng)求回來的json數(shù)據(jù)自動(dòng)轉(zhuǎn)成Model,yymodel,或者本地持久化。
Manager 全局單例的某個(gè)操作,DBManager,HotfixManager,AlertManager,RouterManager
Tools 工具文件類,存放工具類,比如數(shù)據(jù)正則匹配
Resource 放資源什么的
Vender:存放第三方類庫(kù)
閑扯點(diǎn)寫python web的感受,寫tornado的時(shí)候,會(huì)照著django的項(xiàng)目寫。
MVC,MVVM,MVP。。。等等爭(zhēng)論不休,其實(shí)干的比較沒用的一件事就是爭(zhēng)論用那個(gè)好。那個(gè)順手用那個(gè)。對(duì)于新手比較靠譜的辦法是找個(gè)比較著名的項(xiàng)目照貓畫虎,然后試試改改,覺得那塊用不上或者缺自己改改。
##MVC
Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫(kù)記錄列表)。
View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫(kù)記錄)。
Controller(控制器)處理輸入(寫入數(shù)據(jù)庫(kù)記錄)。
iOS初學(xué)一般會(huì)遇到一個(gè)問題,寫成ViewController和Model,寫小了或不需要擴(kuò)展沒關(guān)系。ViewController寫的很臃腫導(dǎo)致異常難以維護(hù)。