代码命名规范
1 类命名
- 遵循大驼峰命名法。
- MB+模块概括名+功能分区名+父类的惯用后缀。比如:MBOrderListVC
- 为了整个项目代码的整洁与统一,建议使用List、Detail、Message、TView、Cell、VC、TVC、VM等字样。
- 模块概括名一定要是统一的、明确的、唯一的代表模块名称。
- 父类的惯用后缀的意思是:如果要从其他框架继承子类,那么必须遵循其命名惯例。比如,继承UIView的子类名称必须以View结尾。
2 属性
2.1 属性名
- 遵循小驼峰命名法、避免缩写。
- 后缀体现属性的数据类型。比如:orderPriceLabel、orderLimitsArray。
- 使用长的、描述性的命名方向。比如settingButton而不是setBtn。
- 代码采用指针*号右置规则,如:
@property (nonatomic, strong) UILabel *nameLabel; // ✅建议 @property (nonatomic, strong) UILabel* nameLabel; // ❌不建议 @property (nonatomic, strong) UILabel * nameLabel; // ❌不建议
2.2 属性定义
- 定义属性的参数顺序排序:原子性、读写、内存管理。比如:
@property (nonatomic, readwrite, copy) NSString *nameString;
- BOOL类型的属性,需要为其getter方法带is前缀。getter方法放在内存管理限定符前面,比如:
@property (nonatomic, readonly, getter=isEditable, assign) BOOL editable;
2.3 实例变量名
- 下划线开头
- 遵循小驼峰命名法、避免缩写
- 后缀体现属性的数据类型。比如:_orderPriceLabel、 _orderLimitsArray。
3 方法
3.1 公有方法名
- 遵循小驼峰命名法,避免缩写
- 不要使用“and”来描述方法有多个参数
3.2 私有方法名
- 遵循小驼峰命名法,避免缩写
3.3 C函数
- 遵循小驼峰命名法,避免缩写
4 协议
4.1 协议名
- 遵循大驼峰命名法、避免缩写。
- 代理协议:类名+Delegate。比如:MWHomeGroupTabViewDelegate。
- 数据源协议:类名+DataSource。比如:MWHomeGroupTabViewDataSource。
- 普通协议(接口):类名+Protocol。比如:MWOrderListVCProtocol。
4.2 方法名
- 遵循小驼峰命名法、避免缩写
- 如果是代理协议,以发送代理的对象类名作为代理方法名的开始(去掉类名的前缀,并且遵循小驼峰命名法)
5 类扩展
5.1 分类名
- 类名+标识前缀+扩展标识
- 遵循大驼峰命名法、避免缩写
- MW或者自己一贯使用前缀(大写)+下划线为前缀。比如:
NSString (MW_HTTPManager) NSString(ABC_HTTPManager)
5.2 方法名
- 遵循小驼峰命名法、避免缩写。
- MW或者自己一贯使用前缀(小写)+下划线为前缀。比如:
- (void)mw_urlEncodedString; - (void)abc_urlEncodedString;
6 枚举
- 遵循大驼峰命名法
- 枚举写在相应的.h文件中,不需要单独建立文件
- 遵循大驼峰命名法、避免缩写。
- 使用OC的枚举方式。
- 枚举名:工程前缀+枚举范围概括名+Type。比如:MWAlipayResultCodeType
- 枚举中的变量以枚举名开头。 如:MWAlipayResultCodeTypeSuccess
7 常量
常量分类:
- 若常量局限于某“编译单元”,也就是“实现文件”之内,则为私有常量;
- 若常量在类之外可见,则为公开常量。
7.1 公开常量
- 遵循大驼峰命名法、避免缩写
- 通常以MW+类名+功能
- 在声明公开常量时,也可以使用
FOUNDATION_EXPORT
替换extern
- 后缀一般为功能,可参考系统通知
7.2 私有常量
- 遵循4.7.1中的第1条
- 以小写字母
k
开头
8 宏
- 常量定义参考 7常量
- 使用超过一次的小段代码应以宏定义的形式来替代,遵循大驼峰命名法