公司新项目就要着手研发了,希望能为这个项目多准备点知识。回想自己做过的项目,目录结构的划分总不如我的心意,有些目录命名不规范导致表达不明确,有些目录因为不具有代表性,导致在实际中不能充分发挥作用,导致随意添加目录,使得目录层次更复杂。因此今天着手设计一个语义更加明前,分层更加清晰的,又具有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(第三方小组件,如第三方自定义控件等)

采用新设计的前后效果对比

  按照这个设计。我将自己的项目进行了调整。如图所示:

               

  左边是我采用该设计调整后的新的目录结构,右边是原来的目录结构。明显左边的表达清晰,结构合理,而且比较有普遍性;右边的是我以前的目录结构,因为有时候旧的目录结构不能完全达到我的要求,所以就会导致我随意创建新的目录,因此明显比较凌乱。

分享我设计的iOS项目目录结构的更多相关文章

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

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

  2. iOS项目目录结构

    一. 目前最为流行的目录结构是: <先根据模块后根据功能> 的文件目录结构 优点: 模块分明, 并且开发和维护时方便查阅各个功能 缺点: 可能会出现模块内随意建立文件夹, 导致局部逻辑紊乱 ...

  3. IOS项目目录结构和开发流程

    网上相关的资源不多,开源的且质量还不错的iOS项目也是少之又少,最近正好跟同事合作了一个iOS项目,来说说自己的一些想法.   目录结构 AppDelegate Models Macro Genera ...

  4. iOS开发总结——项目目录结构

    1.前言 清晰的项目目录结构有利于项目的开发,同时也是软件架构的一部分,所以,项目开发之初搭建项目的目录结构很重要.刚转iOS时,自己并不知道如何搭建App的项目目录,在参与开发两个应用后,结合Web ...

  5. 转:基于Maven管理的JavaWeb项目目录结构参考

    通常在创建JavaWeb项目时多多少少都会遵循一些既定的比较通用的目录结构,下面分享一张基于Maven管理的JavaWeb项目目录结构参考图: 上图仅是参考,不同项目不同团队都有自己的约定和规范. 个 ...

  6. Laravel项目目录结构说明

    Laravel项目目录结构说明: |- vendor 目录包含你的 Composer 依赖模块及laravel框架. |- bootstrap 目录包含几个框架启动跟自动加载配置的文件. |- app ...

  7. 1-5Tomcat 目录结构 和 web项目目录结构

    对应我的安装路径: web项目目录结构

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

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

  9. 【Android Studio安装部署系列】三、Android Studio项目目录结构

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 简单介绍下Android studio新建项目的目录结构. 常用项目结构类型 在Android Studio中,提供了以下几种项目结 ...

随机推荐

  1. 配置Java EE Eclipse+Tomcat开发环境

    以下将详细介绍在Eclipse下搭建Java EE开发环境的每一步, 环境:Win 7 + JDK 1.7 + Eclipse IDE for Java EE Developers 3.7 +Tomc ...

  2. VC++编译MPIR 2.7.0

    目录 第1章编译    2 1.1 简介    2 1.2 下载    3 1.3 解决方案    4 1.4 创建项目    5 1.5 复制文件树    6 1.6 不使用预编译头文件    8 ...

  3. js 判断当前的手机系统类型

    <script language="javascript">window.onload = function () {alert("1");var ...

  4. 10个很有用的高级Git命令

    迄今,我已经使用Git很长一段时间了,考虑分享一些不管你是团队开发还是个人项目,都受用的高级git命令. 1. 输出最后一次提交的改变 这个命令,我经常使用它 来发送其他没有使用git的人来检查或者集 ...

  5. c# BackGroundWorker 多线程操作的小例子

    在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示 ...

  6. python中的类变量、实例变量

    类变量,是各个实例共享的资源,就像中央空调,只有一个,但每个房间(实例)均可享用. 实例变量,是每个实例各自分配使用的变量,每个房间(实例)都有一台空调,供自己使用. class handle(obj ...

  7. hdu----(2848)Repository(trie树变形)

    Repository Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  8. poj-------------(2752)Seek the Name, Seek the Fame(kmp)

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11831   Ac ...

  9. QQ输入法评价

    用户界面: 用户可以通过登录QQ展现自己的QQ头像,可以点击头像显示用户信息,可以中英文切换,全半角切换,打开属性设置,以为软键盘 记住用户选择: 当用户使用QQ输入法时,QQ输入法可以记住用户当前的 ...

  10. 【源码下载】分享一个支持自安装自卸载的Windows服务

    NetworkComms网络通信框架序言 这个程序来自  www.codeproject.com 具体的出处就忘了 服务器端的程序,我一般采用在windows服务中调用打开的方式,这样既能看到界面,又 ...