关于目录结构,真的是仁者见仁智者见智,没有最好,只有适合自己的 🙂
在网上搜来搜去,大部分人使用的是以下两种形式:
- 架构模式
- 功能模块
架构模式
使用架构模式(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方法,所有的属性都通过 懒加载的形式来初始化!!!!!!!
哥们,都浪到这了,顺手点个赞❤️呗~