iOS 项目的目录结构风格

怎样才能看出一个人的代码功底,丰富的项目经验。首先有一点肯定要有自己的项目目录结构,优秀的项目目录结构,不仅让自己开发效率更高,也能让他人一目了然看出整体项目的大致方向,使项目中其他伙伴容易阅读你的代码,共同开发。

下面截图是我其中一个的项目目录结构风格:


项目目录结构

Basic  ----- 主要包括继承UIViewController的基类BasicViewController和继承UINavigationController的基类BasicNavController。因为后面的控制器基本都会继承使用。

AppDelegate ----- 主要包括AppDelegate和ViewController。

Main ----- 入口目录,主要看项目需要和个人代码风格。我这个项目中只有Start(启动页)、tabBar。有些可能需要封装一个反射机制的目录。

         Start ----- 启动页

         tabBar ----- 封装UITabBarController

Business ----- 业务目录,用于模块开发

设计模式我一般使用MVC+MVVM混合开发,页面简单没有多少业务逻辑一般用MVC,对于页面复杂、业务逻辑多一般用MVVM。当然设计模式是死的,我们要灵活运用到项目中,高效、美观、易阅读、易迭代才是我们开发者所追求的目标,曾经写过一个项目的其中一个模块,我尽量把逻辑、网络、视图、事件都移出Controller,Controller只单单用于展示,但是由于Controller的属性过多,Controller看起来还是很臃肿。后来想起可不可以将Controller的属性封装成属性model来使用,后面业务繁忙就落下了这个问题。

目前业务开发结构分两种:一、每个功能块都包含一个MVVM。二、一个MVVM下面包括所有功能块。而我用的是第一种,按功能块开发会清楚方便些。

Config ----- 配置目录,主要放.pch、.h宏文件等

Operation ----- 用于网络、数据、工具等操作

        Categorg ----- 存放控件的分类,比如UILabel+Util、UIImage+Util、       UIColor+Contract等。

        Data ----- 数据层代码,用于本地数据保存读取的操作,数据库操作。

        Tools ----- 工具类,这个看你个人如何分类了,比如控件点击事件封装成工具、对GCD封装成工具等等,无论是控件、还是操作都可以做成工具。

         Net ----- 网络层代码,用于封装网络的。

Resources ----- 资源目录,一般项目中的.plist,.xcassets都放在这里,还有的视频文件、图片文件、文档文件都放在这里。

Vendors ----- 第三方组件,包括Components(自定义控件)、Libs(第三方库,自定义库)

           Components ----- 自定义控件,比如自定义的MyView,继承于View等。

           Libs ----- 第三方库,自定义库,比如极光友盟导入的静态库,第三方登录导入的静态库,以及自己封装好的sdk。

ps : 每个目录结构风格没有优劣高低之分,适合自己的风格,适合当前业务开发才是最好的,别人的只是用于参考,就像于有些人喜欢用中文备注,有些人喜欢用英文一样。不过我觉得有句话是最能体现我们开发目录结构这种思想的意义所在,高效、美观、易阅读、易迭代才是我们开发者所追求的目标。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容