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