项目目录:主目录按功能模块分类,内部目录按业务分类(model,view,viewcontroller);
总结一下命名规范:
- 驼峰命名法; 描述清楚,避免缩写;
- 主目录文件夹:项目标识 + 模块概括
- 内部文件夹:项目标识 + 模块概括 + 业务(view,controller,model等)
- 类名:项目标识 + 模块概括 + 功能概括 + 父类惯用后缀
- 属性:属性作用+属性类型;
- 方法名:体现方法作用,参数要写清楚作用;
- 协议名: 类名 + 协议类型(delegate,datasourc,其他)
- 常量:类名 + 常量作用
注意:标识和概括,都是唯一,统一,整洁的;
文件夹命名
- 主文件夹的名称:体现该模块的功能概括。比如:支付系统、订单;
- 内部文件夹:项目标识 + 模块概括 + 业务(view,controller,model等);
类
类名
- 驼峰命名法
- 项目标识符 + 模块概括名 + 功能分区名 + 父类的惯用后缀。比如:ELOrderListVC
注意:
模块概括名要统一明确唯一,功能分区名要整洁统一,父类惯用后缀用框架得出。
属性名 和 实例变量名(_开头)
- 驼峰命名法,避免缩写,体现属性的作用。
- 后缀体现属性的数据类型。比如:orderPriceLabel、orderLimitsArray。
属性定义
- 定义属性的参数顺序排序:原子性、读写、内存管理。比如:@property (nonatomic, readwrite, copy) NSString *nameString;
- BOOL类型的属性,需要为其getter方法带is前缀。getter方法放在内存管理限定符前面,比如:@property (nonatomic, readonly, getter=isEditable, assign) BOOL editable;
公有方法名
- 驼峰命名法、避免缩写。
- 方法名体现方法作用,参数写清楚;
私有方法名
- 驼峰命名法、避免缩写。
- 直接父类是Cocoa框架:sy_开头。
- 直接父类是其他框架:框架缩写+下划线开头。比如:sd_、mj_。
纯C函数
- 驼峰命名法、避免缩写。
全局变量
- 驼峰命名法
- 项目标识 + 类名+描述
.h文件
extern NSTimeInterval ELPersonModelAnimationDuration;
extern NSString *ELPersonModelErrorMessage;
.m文件
NSTimeInterval ELPersonModelAnimationDuration = 0.3;
NSString *ELPersonModelErrorMessage = @“ErrorMessage”;
枚举名
- 驼峰命名法、避免缩写。
- 枚举对象名:项目标识 + 枚举范围概括名 + Type。比如:ELAlipayResultCodeType
- 枚举种类名:项目标识 + 枚举范围概括名 + Type_某种情况名。比如:ELAlipayResultCodeType_success。
协议名
- 驼峰命名法、避免缩写。
- 代理协议:类名+Delegate。比如:ELOrderListChangedDelegate。
- 数据源协议:类名+DataSource。比如:ELOrderListDataSource。
- 普通协议:类名+Protocol。比如:ELOrderListVCProtocol。
分类
分类名
- 驼峰命名法、避免缩写
- 类名+标识前缀+扩展标识。
第三方库的封装
- 手动管理:项目标识 + 框架名,避免冲突;如:ELMJRefresh。
- pod管理:不需要特殊处理。
常量
私有常量
.m文件
static const NSTimeInterval kAnimationDuration = 0.3;
static NSString *const kErrorMessage = @“ErrorMessage”;
公开常量
.h文件
extern const NSTimeInterval ELPersonModelAnimationDuration;
extern NSString *const ELPersonModelErrorMessage;
.m文件
const NSTimeInterval ELPersonModelAnimationDuration = 0.3;
NSString *const ELPersonModelErrorMessage = @“ErrorMessage”;
- 遵循小驼峰命名法、避免缩写。
- 文件内常量:k+常量作用描述;类之外可见常量:模块标识+常量作用描述;
通知
- 按照公共常量方法处理。
- 以Notification为后缀。