简单写了几点,参照了唐巧的类结构和Getter初始化方式。
iOS 代码规范
主题
- 注释规范
- 类结构
- 属性初始化
- 图片命名规则
- 工程目录结构
- 宏定义
- Delegate 定义
- HTTP 接口定义
1,注释规范
1.1 单行注释
/// 简要描述.
1.2 多行注释
/** 简要描述.
*
* 详细描述或其他.
*/
2,类结构
使用#pragma mark –来分类方法
#pragma mark – Life Cycle
#pragma mark - Events
#pragma mark – Private Methods
#pragma mark - UITextFieldDelegate
#pragma mark - UITableViewDataSource
#pragma mark - UITableViewDelegate
#pragma mark - Custom Delegates
#pragma mark – Getters and Setters
3,属性初始化
建议直接使用Getter初始化,但不建议在Getter里涉及太多逻辑。
如果ViewController有多个View部分初始化,建议单独写个用作初始化的方法,例如 _initView OR _initSubview,数据初始化可以单独写作_initData 方便阅读。
4,图片命名规则
4.1 建议使用Image Assets管理图片;
Image Assets能很好区别二倍图和三倍图,并且能更直观的看到图片内容。
4.2 图片文件命名;
· 用英文命名,不用拼音
· 每一部分用下划线分隔
· 图片名中两倍图在名字最后要加@2x,三倍图在名字最后要加@3x
规则: 模块 + 类别 + 功能 + 状态
例如: tab + button + search + normal = tab_button_seach_normal@2x.png
4.3 图片文件夹分类尽量按功能模块分类;
5,工程目录结构
工程目录结构分为:基础部分+功能模块部分;
例如:Supporting Files + Resource + Vendor + UI Components + Category + Extendtion + 功能模块(Profile + Login 等等)。
6, 宏定义
一般涉及宏定义的部分为工具部分(例如NSLog和获取UIApplication单例),另一部分是涉及http 接口部分,建议区分为不同的宏定义文件,以便于统一管理。
7,Delegate 定义
Delegate的命名一定要写清楚Delegate所属,例如UITableview + Delegate;
Delegate的方法定义时建议遵守Apple的规范,例如:-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
规则是:传递委托对象 + 传递参数
8,HTTP 接口定义
建议直接建一个HttpInterfaceManager类,统一定义针对某一个Server的接口调用,可以用类结构(见同主题2)区分不同模块,如果工程涉及Http接口太多可以考虑按模块分类。