iOS 开发规范
命名规范
统一要求
- 尽量使用英文命名,同一个含义的不出现多个不同的单词
- 命名才用驼峰命名法
类名采用大驼峰(UpperCamelCase)
类成员、方法小驼峰(lowerCamelCase)
局部变量大小写首选小驼峰
视图命名
- ViewController 不要采用VC这样的缩写,统一简化为Controller
- UIView 级别的组件不要以 Controller 或 Displayer 结尾,如果起到管理作用可以使用 control 结尾
- 大模块中的View 带上模块缩写 例如: MeiPai -> MPXXXView
协议命名
- 好的协议名应能立刻让人分辨出这不是一个类名,除了以常用的 Delegate、DateSource 做结尾外
通知命名
基本命名格式是:[与通知相关的类名] + [Did | Will] + [UniquePartOfName] + Notification
NSApplicationDidBecomeActiveNotification
NSWindowDidMiniaturizeNotification
NSTextViewDidChangeSelectionNotification
临时变量命名
- 临时变量可以写得很短,如 i、k、vc 这样;
- 临时变量可以使用匈牙利前缀,但数据类型不可以作为前缀:
// OK
wCell, vcMaster, vToolbar
// 糟糕,数据类型作为前缀
bool_switchState, floatBoxHeight
缩写
可以使用广泛使用的缩写,如 URL、JSON,并且缩写要大写。但像将download简写为dl这种是不可以的。
// OK
URL,JSON, Password, Animate
// 糟糕
Url, json, psw, anim
destinationSelection
// OK
destSel
// 糟糕
setBackgroundColor:
// OK
setBkgdColor:
// 糟糕
代码格式
常量
常量定义示例:
- 常量字符串
NSString *const
// 头文件
extern ushort APIFetchPageSizeDefault; // 无const,可在外部修改
枚举
- 采用Objective-C 规范的枚举
typedef NS_ENUM(NSUInteger, DeviceType) { kDeviceTypeiOS, kDeviceTypeAndroid, kDeviceTypeUnkown }
空格
- 类方法声明在方法类型与返回类型之间要有空格。
// 糟糕 -(void)methodName:(NSString *)string; // OK - (void)methodName:(NSString *)string; // 条件判断的括号内侧不应有空格。 // 糟糕 if ( a < b ) { // something } // OK if (a < b) { // something } // 关系运算符(如 >=、!=)和逻辑运算符(如 &&、||)两边要有空格。 // OK (someValue > 100) ? YES : NO // OK (items)?: @[]
花括号
- 方法开始,if, for 等的花括号不要另起一行
- (void)methodName:(NSString *)string { ↑空格 ↑空格 ↑空格,花括号不要另起一行 if (xxxx) { 空格↑ ↑空格,花括号不要另起一行 } else { 空格↑ ↑空格,花括号不要另起一行 } }
注释
变量注释
/** 应用ID */
@property (nonatomic, copy) NSString *appid;
方法注释
/** 设置UI */
- (void)setupUI;
/**
* 设置UI
* @params animate 是否带动画
*/
- (void)setupUI:(BOOL)animate;
文件组织
Config
存放基础配置信息,定义常用开发宏,和变量的地方
Common
常用的方法,扩展,类别、帮助类
Datas
统一管理 全局对象、数据存储,数据统计的地方
Network
我们采用集约式的Api请求方式,所有的Api请求都通过调用Network的方法来获取回调。
Classes
Classes 主要业务放置的地方,里面再按照模块划分,模块下面再根据MVC进行分类
SDK
这个目录放第三方的SDK,如UMeng、WeiboSDK、WeixinSDK等等
Vendor
原则上第三方库优先采用 Cocoapods 形式引入。部分不提供Pod接入,或者是需要在第三方库基础上进行修改的,则采用源码方式接入,放置在Vendor目录下面。
Resources
声音图片,配置信息等放置在Resources中