公司新項目就要着手研發了,希望能為這個項目多准備點知識。回想自己做過的項目,目錄結構的划分總不如我的心意,有些目錄命名不規范導致表達不明確,有些目錄因為不具有代表性,導致在實際中不能充分發揮作用,導致隨意添加目錄,使得目錄層次更復雜。因此今天着手設計一個語義更加明前,分層更加清晰的,又具有iOS項目普遍性的目錄結構。下面就介紹下我最新設計的目錄結構,目前我拿一個舊的項目用新的設計結構調整后,確實感覺清晰很多,您可以看看后面我展示的項目調整目錄前后的效果。
我新設計的目錄結構
MVCS(Model,View,Controller相關。包含各個功能模塊)
Resources(資源型文件目錄,如數據圖片,plist)
Operation(主要的操作類,如網絡請求操作,數據庫操作,操作工具等)
config(宏定義和const等可修改的配置文件)
AppDelegate(這個目錄下放的是AppDelegate.h(.m)文件)
Vendors(第三方組件)
這樣划分,名稱語義比較清晰,讓人一眼看上去就知道各個目錄的主要職責,方便不同功能模塊的同事進行開發測試工作,而且具有代表性,能滿足新功能開發的變化等擴展需要。
MVCS(用戶接口相關。按照功能模塊划分子目錄MVC)
|-功能模塊1(功能模塊目錄)
|-|-Models
|-|-Views
|-|-Controllers
|-功能模塊2
|-|-Models
|-|-Views
|-|-Controllers
|-功能模塊3
|-|-Models
|-|-Views
|-|-Controllers
…
|-Base(重用性較高的BaseMVC,如父控制器,父視圖等)
|-|-Models
|-|-Views
|-|-Controllers
|-Main(包含功能模塊之外的MVC目錄)
|-|-Models
|-|-Views
|-|-Controllers
Resources(資源型文件目錄,如數據圖片,plist)
|-photo(照片)
|-city.plist(城市數據)
config(宏定義和const等可修改的配置文件)
|-Const.h(常量文件)
|-Macro.h (宏文件)
|-Notification.h (通知定義文件)
…
AppDelegate(這個目錄下放的是AppDelegate.h(.m)文件)
|-AppDelegate.h
|-AppDelegate.m
Operation(主要的操作類,如網絡請求操作,數據庫操作,操作工具等)
|-Net(網絡層的代碼)
|-Data(數據層代碼)
|-Tools(工具類)
|-Category(類目)
…
Vendors(第三方組件)
|-Libs(第三方庫)
|-|-AFNetworking
|-|-FMDB
|-|-SDWebImage
|-Components(第三方小組件,如第三方自定義控件等)
…
采用新設計的前后效果對比
按照這個設計。我將自己的項目進行了調整。如圖所示:
左邊是我采用該設計調整后的新的目錄結構,右邊是原來的目錄結構。明顯左邊的表達清晰,結構合理,而且比較有普遍性;右邊的是我以前的目錄結構,因為有時候舊的目錄結構不能完全達到我的要求,所以就會導致我隨意創建新的目錄,因此明顯比較凌亂。