本篇是 iOS 搭建基礎框架 系列,第二部分 目錄結構篇 。
其他相關文章傳送門如下:
關於目錄結構,真的是仁者見仁智者見智,沒有最好,只要適合自己的 ?
在網上搜來搜去,大部分人使用的是以下兩種形式:
- 架構模式
- 功能模組
架構模式
使用架構模式(MVC / MVVM等 )劃分,再用功能模組來細分
1.主目錄結構
-KLFoundationFrame
--AppDelegate // 程式入口
--Class // 業務模組。
--FunctionModule // 功能模組 賬號管理,支付管理等
--BasicModule // 基礎模組
---Config // 初始化配置。包含巨集定義檔案,全域性配置檔案,全域性常量檔案
---Category // 類目。包含各種類的分類
---Utility // 工具類。HUD,AlertView等
---Vendors // 第三方庫。部分需要修改或者不支援cocoapod的第三方的框架引入
--Resource // 資源。包含plist,image,html,bundle,Localizable.strings等
-KLFoundationFrame Tests
-KLFoundationFrame UITests
-Products // 系統自動生成的.app所在資料夾
-Pods // 採用 CocoaPods 管理的第三方庫。
2.架構目錄結構
-- Class
---Controller // MVVM的基類或者通用類
----Base
----Home
---Model
----Base
----Home
---View
----Base
----Home
---ViewModel
----Base
----Home
複製程式碼
這種方式,我覺得太難找了
功能模組
使用功能模組劃分,在每個模組裡在用架構模式(MVC / MVVM等)細分
1.主目錄結構
-KLFoundationFrame
--AppDelegate // 程式入口
--Class // 業務模組。
--FunctionModule // 功能模組
---Manager // 管理類。賬號管理等
---Utility // 工具類。HUD,AlertView等
--BasicModule // 基礎模組
---Config // 初始化配置。包含巨集定義檔案,全域性配置檔案,全域性常量檔案
---Category // 類目。包含各種類的分類
---Vendors // 第三方庫。部分需要修改或者不支援cocoapod的第三方的框架引入
--Resource // 資源。包含plist,image,html,bundle,Localizable.strings等
-KLFoundationFrame Tests
-KLFoundationFrame UITests
-Products // 系統自動生成的.app所在資料夾
-Pods // 採用 CocoaPods 管理的第三方庫。
2.模組目錄結構
-- Class
---Base // MVVM的基類或者通用類
----Controller
----Model
----View
----ViewModel
---Home
----Controller
----Model
----View
----ViewModel
類推...
複製程式碼
這是我一直在用的目錄結構形式,個人感覺還不賴。
檔案目錄結構
檔案目錄的排列順序如下,若沒有實現相對應的種類,跳過順延下去。
-.h
-- 檔案註釋
-- #import // 匯入類
-- NS_ENUM // 列舉類
-- @protocol // 代理
-- @interface // 檔案入口
-- @property // 屬性
-- methods // 方法
-.m
-- 檔案註釋
-- #import // 匯入類
-- #define // 巨集定義
-- static // 靜態變數
-- @interface // 檔案入口
-- @property // 屬性
-- @implementation // 實現
-- methods // 方法
複製程式碼
檔案規範
在實現檔案 .m
檔案中, 充斥著大量的程式碼,為了便於維護,也要制定統一的規範
-.m
--Lifecycle // 生命週期
--OverwriteSuperClass // 重寫父類
--Response Mehtods // 響應方法(通知,Target等)
--Delegate // 代理方法
--Private Methods // 本類檔案使用的方法,私有的
--Public Methods // 暴露給外界的介面
--Getters and Setters // 屬性的get、set方法,所有的屬性都通過 懶載入的形式來初始化!!!!!!!
複製程式碼
哥們,都浪到這了,順手點個贊❤️唄~