1.前言

清晰的项目目录结构有利于项目的开发,同时也是软件架构的一部分,所以,项目开发之初搭建项目的目录结构很重要。刚转iOS时,自己并不知道如何搭建App的项目目录,在参与开发两个应用后,结合Web开发的目录习惯我整理了自己的目录结构。分享一下,欢迎交流。

2.我的项目目录结构

项目目录
├── ThirdLib(三方库)
│ ├── SDWebImage
│ └── AFNetworking
├── Framework(自己封装的类库)
├── General(通用类目录)
│ ├── Class(通用的类,比如自定义父类)
│ └── Helper(通用辅助方法)
├── Main(程序单一入口,仅放AppDelegate区分其他文件)
│ ├── AppDelegate.h
│ └── AppDelegate.m
├── Model(数据模型类目录)
│ ├── Macro(宏定义目录)
│ ├── BLL(业务逻辑层目录)
│ ├── DAL(数据访问层目录)
│ ├── Entity(自定义实体目录)
│ ├── Request(网络请求类目录)
│ ├── Location(定位服务类目录)
│ └── Socket(Socket类目录)
├── Module(功能模块目录)
│ │
│ ├─── ModuleA
│ │ ├── ViewControllerA.h(视图控制器头文件)
│ │ └── ViewControllerA.m(视图控制器m文件)
│ ├── ModuleB
│ ├── ModuleC
│ ├── ModuleD
│ └── ModuleE
└── View(视图类目录)
└── MyTestView

3.说明

1)项目目录

项目程序文件根目录,存放项目程序文件、资源文件等。

2)ThirdLib

第三方开源类库,比如,SDWebImage、AFNetworking等。

3)Framework

自己封装的类库。

4)General

通用类目录,存放自定义的视图控制器基类等。

5)Main

程序单一入口,仅放AppDelegate区分其他文件

6)Model

数据模型类文件目录。主要用于存放自定义的数据模型类。

子目录:

I)Macro(宏定义目录)

我把自己的很多宏定义,包括色彩字体等样式宏定义、业务逻辑宏定义、网络请求、Core Data的宏定义等头文件放在该目录下。命名规则为XxxMacro.h。这样在头文件引入的时候很清楚我要引入哪些宏定义,以避免重复引用。(虽然import已经避免了编译文件时重复引入文件,但是强迫症患者。。你懂的)

II)BLL(业务逻辑层目录)

业务逻辑层(Business Logic Layer)目录主要存放的是项目的业务逻辑处理类及分类。按照项目功能需求来封装业务逻辑。具体命名依所实现的功能业务来命名。

III)DAL(数据访问层目录)

数据访问层目录 主要存放项目.xcdatamodeld文件和封装的Core Data接口类。

IV)Entity(自定义实体目录)

数据模型实体类目录。存放例如User等数据模型的类文件。

V)Request(网络请求类目录)

存放网络请求的类目录。

VI)Location(定位服务类目录)

存放定位服务类。

VII) Socket(Socket类目录)

存放Socket类。

7)Module

功能模块类目录,按照项目的功能模块创建子目录。每个子目录下存放该模块的视图控制器文件。

8)View

视图文件类目录。存放视图文件。比如自己封装的视图控件,封装的cell等。

4.小结

1)吐槽一下博客园的文档编辑。编写HTML模式的时候,我无意间点了取消。。。然后全都木有了。。。都木有了。。。木有了。。。有了。。。了。。。!!!!!!妹啊!!为什么取消键在右边啊喂!!!!然后command+z。。。页面就全部崩溃了。。。。面就全部崩溃了。。。。就全部崩溃了。。。。全部崩溃了。。。。部崩溃了。。崩溃了。。。。溃了。。。。了。。。。!!!!!!另外,博客输入文本的插件内容区域高度太小了。。。用起来很不爽啊!!!!!!体验太差!差评

2)言归正传,我的目录结构是综合了之前的开发经验和我leader的开发习惯以及网上的目录结构整理的,并不一定适用于其他项目。欢迎留言交流,谢谢~

iOS开发总结——项目目录结构的更多相关文章

  1. [android开发篇]项目目录结构

  2. MVVM 模式下iOS项目目录结构详细说明

    ➠更多技术干货请戳:听云博客 我们在做项目的时候,会经常用到各种设计模式,最常见的要数 MVC (模型,视图,控制器)了.但是,今天我们要说的是另一种设计模式——MVVM. 所以 MVVM 到底是什么 ...

  3. Android开发学习之路--Android Studio项目目录结构简介

    既然已经搭建好环境了,那就对Android Studio中项目目录结构做个简单的了解了,这里以最简单的Hello工程为例子,新建好工程后看如下三个工程视图: 1.Android工程 manifests ...

  4. vue项目目录结构

    VUE项目目录结构 如上图所示,我们的目录结构就是这样的了. 目录/文件 说明 build 这个是我们最终发布的时候会把代码发布在这里,在开发阶段,我们基本不用管. config 配置目录,默认配置没 ...

  5. React脚手架创建一个React应用以及项目目录结构详解

    react脚手架 用来帮助程序员快速创建一个基于xxx库的模板项目,包含了所有需要的配置,指定好了所有的依赖,可以直接安装/编译/运行一个简单效果 react提供了一个专门用于创建react项目的脚手 ...

  6. Angular-cli新建项目目录结构详解

    Angular-cli新建项目目录结构详解 在上一篇博客中我们已经通过Angular CLI命令行工具创建出来一个全新的Angular项目,要想写项目,首先我们要先搞清楚项目的目录结构是怎样的,每个文 ...

  7. PHP项目目录结构

    PHP项目目录结构 原创 2017年11月23日 16:02:18 标签: php / 结构 1226 一个完整的项目需要有三大部分构成,项目框架,业务实现,公共支持.为了便于开发维护,通常使三部分分 ...

  8. ASP.NET Core 基本项目目录结构 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 基本项目目录结构 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基本项目目录结构 上一章节中我们成功创建了一个名为 Hell ...

  9. Vue Vue项目目录结构梳理

    Vue项目目录结构梳理   by:授客 QQ:1033553122 1.   结构梳理   . ├── build/                      # webpack 配置文件: │   ...

随机推荐

  1. WMS常用表

    --主数据 select * from sku; select * from pack; select * from userdatatranslation; ' ; SELECT * FROM LO ...

  2. Java学习笔记(二十):多态

    什么是多态 多态的好处 举个例子:需求:给饲养员提供一个喂养动物的方法,用于喂养动物 假如没有多态,会发现针对不同类型的动物,我们需要提供不同的feed方法来喂养,当需求变化时,比如增加动物,就要增加 ...

  3. 【转载】Windows上那些值得推荐的良心软件-整理 easybcd 引导工具 easyuefi 引导工具

    您查询的关键词是:清理dism知乎 以下是该网页在北京时间 2019年03月17日 21:56:16 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 htt ...

  4. hbase总结~hbase配置和使用

    Base配置和使用文档......................................................................................... ...

  5. centos 7 vim 保存文件 root 权限 及 使用

    vim打开文件时,没有用root账户,保存时才发现需要root权限.办法是在vim执行一下命令: :w !sudo tee % 未完待续

  6. hibernate save数据的时候报错:ids for this class must be manually assigned before calling save()

    这个错误是因为eclipse  这种jpatools 自动生成的实体类内没把id 设置为自增,还有id的值在生成的时候默认为string 即使加上了也所以无法自增 ,所以还需要把string 换成In ...

  7. Android无线蓝牙总结

    一.基础知识: ①蓝牙的四层协议: 蓝牙协议分为4层,即核心协议层.电缆替代协议层.电话控制协议层和采纳的其它协议层.这4种协议中最重要的是核心协议.蓝牙的核心协议包括基带.链路管理.逻辑链路控制和适 ...

  8. 洛谷1345 [USACO5.4]奶牛的电信Telecowmunication

    原题链接 最小割点数转换成最小割边数的模板题(不过这数据好小). 每个点拆成两个点,连一条容量为\(1\)的边,原图的边容量定为\(+\infty\),然后跑最大流即可. 这里用的是\(Dinic\) ...

  9. Python之队列Queue

    今天我们来了解一下python的队列(Queue) queue is especiall useful in threaded programming when information must be ...

  10. redis 一些操作命令

    # 删除laravel keyredis-cli -h 10.9.103.15 -a password keys "laravel*" | xargs redis-cli -h 1 ...