公司新项目就要着手研发了,希望能为这个项目多准备点知识。回想自己做过的项目,目录结构的划分总不如我的心意,有些目录命名不规范导致表达不明确,有些目录因为不具有代表性,导致在实际中不能充分发挥作用,导致随意添加目录,使得目录层次更复杂。因此今天着手设计一个语义更加明前,分层更加清晰的,又具有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(第三方小组件,如第三方自定义控件等)
…
采用新设计的前后效果对比
按照这个设计。我将自己的项目进行了调整。如图所示:
左边是我采用该设计调整后的新的目录结构,右边是原来的目录结构。明显左边的表达清晰,结构合理,而且比较有普遍性;右边的是我以前的目录结构,因为有时候旧的目录结构不能完全达到我的要求,所以就会导致我随意创建新的目录,因此明显比较凌乱。