
黑五福利鎮(zhèn)樓
引子
不知不覺代碼寫了四年多了
接觸過大大小小的項目30+
見過形形色色的結(jié)構(gòu)目錄
無論是接手代碼還是自己的項目改著改著
總覺得沒有讓本強迫癥患者大呼舒爽的Feel
所以結(jié)合自己手頭的項目重新梳理了一遍
本著文件路徑深不過四層的一個中心
通用工具類和項目源碼類區(qū)分的兩個基本點
整體結(jié)構(gòu)以“xxProject”演示 如下面的思維導圖所示

New xxProject.png
New xxProject(演示項目)
Common Tools(通用工具庫,可以一鍵移植到別的項目使用)
Base(通用基類)
- BaseLabel(常用標簽,可以封裝實例方法,一鍵配置layerBorder,默認字體等)
- BaseButton(常用按鈕,可以封裝實例方法,包含倒計時功能的按鈕,一鍵配置cornerRadius等)
- BaseNavController(導航控制器,比較常用,所以放到基類里統(tǒng)一處理,Tabbar基本只用一次就算了)
- BaseViewController(所有ViewController的基類,可以放一些公用方法,設(shè)置BackgroundColor這些)
- BaseListController(重寫初始化方法,自帶一個TableView,實現(xiàn)一些代理)
- BaseScrollController(重寫初始化方法,自帶一個ScrollView,并放入一個ConntentView撐開)
- BaseWebController(自帶UIWebView/WKWebView,并且封裝進度條ProgressView之類的)
Category(分類)
- Foundation/NSCategory(對于NS方法的補充,例如NSString/NSDate/NSDictionary常見分類)
- UIKit/UICategory(對于UI常見方法的補充,例如UIImageView/UILayoutGuide等)
Untils(輔助)
- Device Info(因為經(jīng)常判斷手機設(shè)別型號,存放AppVersion,以及NSBundle里其余的信息)
- Debug System (每個項目都少不了自定義Log打印系統(tǒng),還有一些輔助調(diào)試的方法,防護框架等通用工具)
Project Setting(針對單個項目)
Prefix header (全局引用頭文件.pch)
Macros(預(yù)編譯宏)
- Usual Color(常用的顏色,用宏比較方便)
- Usual Font(常用的字體,用宏一鍵調(diào)用)
Constant(常量)
- Notify(通知名,整個APP所有的通知統(tǒng)一管理)
- Tips/Errors(方便文案修改,放一起統(tǒng)一管理)
- Keys(NSUserDefault的Keys/注冊三方庫的AppIds)
Manager(管理工具)
- Net Manger(網(wǎng)絡(luò)請求)
- Host.h(涉及到開發(fā)環(huán)境/預(yù)發(fā)布環(huán)境/生產(chǎn)環(huán)境多個服務(wù)器主機)
- Api.h(接口羅列,可能涉及到接口版本號)
- Session.h(具體的POST/GET請求工具,例如AFN的封裝)
- Track Manger(數(shù)據(jù)埋點工具,針對項目不同,所以沒有放在通用里)
- Language Manager(多語言環(huán)境切換管理工具,國家地區(qū)切換同理)
Handler(處理工具)
- Show Handler(這個目錄就是為了方便App空數(shù)據(jù)時展示,還有服務(wù)器數(shù)據(jù)轉(zhuǎn)換成展示所需樣式)
- Default Image(展位圖)
- Default Attributes(固定風格富文本)
- Calculator Handler(將服務(wù)器返回的元數(shù)據(jù)做二次處理方便展示)
Cache(緩存)
- Local ShareInstance(內(nèi)存里的單例)
- Singleton
- Local Storage(硬盤里的持續(xù)化存儲)
- UserDefault/Coredata/FMDB
Project Module(項目組件化)
Pubilc(公用浮層)
- Toast
- HUD
- Alert
- Combine(組合控件,有的UI喜歡兩個Label一個UImage組合一起反復(fù)用這樣)
BaseModule
- BaseModel
- xxResponseModel(數(shù)據(jù)結(jié)構(gòu)模型,無論MVC還是MVVM必備)
- BaseViewModel
- xxBaseCommond(以MVVM為例,邏輯處理的地方,鏈接視圖View和數(shù)據(jù)Model)
- BaseViewController
- xxController(View的集合,只處理視圖布局,與ViewModel雙向綁定)
- BaseView
- xxTableviewCell
- xxCollectionViewCell
- xxTextField
- xxTextView
HomePage
UserPage
ActivityPage
3rd Library(三方庫)
CocoaPods
Carthage
Others Code
Resources(各種資源文件)
Asset(資源集)
- AppIcon
- LaunchImage
.gif(圖片文件)
.ttf(字體文件)
.html(本地Html你懂的)
.entitlements(推送等環(huán)境配置)
.strings(多語言環(huán)境源文件)
- Base
- English
- Arabic
- Russian
.plist(同一個項目會存在多個info.plist,對比著好管理)
- targets/info.plist