工程目录
合理的目录结构首先应该是清晰的,让开发人员一眼看上去就能大概了解各个目录的内容,这样也容易应对新的变化。尤其是随着代码量的上升,整体目录结构的划分就越发重要,做到以下两点即可:
- 功能、业务分离。将业务模块与功能模块分离可以减少代码耦合,增强代码复用。
- 数据逻辑层与视图层分离。数据逻辑与ui分离,同时设定清晰的接口能够提高业务开发与画面开发人员效率,提高测试效率,便于问题排查,同时代码结构清晰。
#
目录结构注:目录划分不是绝对的,也没有真正的好坏之分,具体还是按照业务需求、功能需求寻求一种最合适的结构,只要适用于自己的业务,就是好的目录结构。
#
划分说明- AppDelegate+AppService.h:包含IM、支付等的三方回调,减少appDelegate代码量,处理app生命周期外的业务。随着项目的发展,一些启动事件以及全局功能的初始化会逐渐增多,因此创建一个
AppDelegate
的分类,将AppDelegate
从杂乱臃肿中解放出来。 - Base:MVC基类、共通控制器。
- Manager:提供App管理、用户信息管理、通讯管理的助手类,文件名与功能挂钩。
- Mudule:业务模块(根据底部tab栏划分)内部区分model(可选)、view(可选)、controller避免跨层访问。
- Base:基类 包含一些定制化内容如无数据页面、错误页面,利于维护,减少冗余。
- Tools:工具:缓存、定位等的封装以及三方框架的二次封装。
- Macro:配置:宏定义文件-全局配置参数、工具方法、颜色尺寸等。
- Resources:资源:plist、音视频、字体、html等并且分类存放。
- Images.xcassets:
Images.xcassets
中进行管理,首先根据业务模块分别创建xcassets
,再根据页面建立文件夹存放图片。使用assets后,全部的图片不用我们手动再去添加@2x,@3x,只需把图片拖进对应的位置就好了。
#
文件命名#
图片完整的图片命名可以准确表达图片用途,方便开发人员使用,图片名称需要注意以下几点:
通途分类
说明图片具体用在那一方面,例如:
视图背景
bg_xxx.png
,如页面中view的底部图片,navigationBar的底部图片。页面背景图片应扣除状态栏和
navigationBar的高度,如果有tab的话也应扣除.按钮
btn_xxx.png
图示
icon-xxx.png
,如返回、添加、删除等功能性图标。图片
pic-xxx.png
tabbarIcon,tab栏图标只需提供未选中及选中状态对应图标即可。
tab-xxx-n.png // 未选中
tab-xxx-s.png // 选中
逻辑分类
从图片的功能用途或具体内容进行描述。
btn_signup_n.png
状态分类
比如说按钮的图片根据按钮的显示状态进行分类,一般分为普通状态、点击时高亮、不能点击、选中状态。
btn-xxx-n.png // 普通
btn-xxx-h.png // 高亮
btn-xxx-d.png // 不能点击
btn-xxx-s.png // 选中
#
类文件类名(以及类别、协议名)应首字母大写,并以驼峰格式分割单词。
例:UserInfoManager
UserInfo:用户信息
Manager:管理者
#
扩展扩展名称清晰表明扩展用途,以类名+扩展(UIImageView +Web)的形式。
例:UIImageView+Web.h
创建一个基于UIImageView 的类别用于网络请求图片。UIImageView为要扩展的类名,Web为扩展的功能。
#
如何添加文件?保持工程文件的物理路径与逻辑路径一致,有利于文件的查找管理。
因此在向工程添加文件时,首先打开项目的文件夹,手动先创建每层的文件夹,再将文件夹add到项目中,这样可以使Xcode中显示的文件夹和Finder显示的保持一致。