代码规范:注意事项
1. 使用 #pragma mark - 来分类方法
2. if-else 规范
if (isOk) {
} else {
}
3. 方法之间应该有且只有一行。在方法内的空白应该分离功能,但通常都抽离出来一个新方法
4. 注释必须保持最新或被删除。一般避免使用块注释,因为代码尽可能做到自解释
5. 命名:长的,描述性的方法和变量命名是好的
常量应该使用驼峰式命名规则,且所有单词首字母大写和加上与类名有关的前缀
6. 下划线:当使用属性时,实例变量应该用 self. 来访问和改变。但有一个特例,在初始化方法里,实例 变量应该直接被使用来避免getter/setter的副作用
7. 方法: -/+ 加空格 在参数之前应该包含一个描述性的关键字来描述参数
8. 变量:尽量以描述性的方式来命名。单个字符的变量命名应该尽量避免(出了在for循环中)
9. 枚举: typedef NS_ENUM (NSInteger, RWTGlobalConstants) {
RWTPinSizeMin = 1,
RWTPinSizeMax = 5,
RWTPinCountMin = 100,
RWTPinCountMax = 500
};
旧的k-style应避免,除非编写Core Foundation C 的代码
10. switch 使用枚举类型的时候 default 是不需要的!
11. OC使用YES/NO C/C++中才使用true/false.
nil解析成NO,没有必要在条件语句中比较!
不要拿某样东西直接与YES比较,因为YES被定义为1和一个BOOL能被设置为8位.
如果BOOL属性的名字是一个形容词 is 可以省略
12. 三元操作符:单个条件求值常常需要它。提高代码清晰性和简洁性
13. 类构造方法,返回值类型是instancetype而不是id
14. CGRect x,y,width,height
CGRect frame = self.view.frame;
CGFloat x = CGRectGetMinX(frame);
CGFloat y = CGRectGetMinY(frame);
CGFloat width = CGRectGetWidth(frame);
CGFloat height = CGRectGetHeight(frame);
15. 黄金路径,左手边的代码应该是golden和happy路径
应该:
if (![someValue boolValue]) {
return;
}
// do something ……
不应该:
if ([someValue boolValue]) {
//do something
}
16. 错误处理
应该:
NSError *error;
if (![self trySomethingWithError:&error]) {
//handle error!
}
不应该:
NSError *error;
[self trySomethingWithError:&error];
if (error) {
//handle error!
}
1. 使用 #pragma mark - 来分类方法
2. if-else 规范
if (isOk) {
} else {
}
3. 方法之间应该有且只有一行。在方法内的空白应该分离功能,但通常都抽离出来一个新方法
4. 注释必须保持最新或被删除。一般避免使用块注释,因为代码尽可能做到自解释
5. 命名:长的,描述性的方法和变量命名是好的
常量应该使用驼峰式命名规则,且所有单词首字母大写和加上与类名有关的前缀
6. 下划线:当使用属性时,实例变量应该用 self. 来访问和改变。但有一个特例,在初始化方法里,实例 变量应该直接被使用来避免getter/setter的副作用
7. 方法: -/+ 加空格 在参数之前应该包含一个描述性的关键字来描述参数
8. 变量:尽量以描述性的方式来命名。单个字符的变量命名应该尽量避免(出了在for循环中)
9. 枚举: typedef NS_ENUM (NSInteger, RWTGlobalConstants) {
RWTPinSizeMin = 1,
RWTPinSizeMax = 5,
RWTPinCountMin = 100,
RWTPinCountMax = 500
};
旧的k-style应避免,除非编写Core Foundation C 的代码
10. switch 使用枚举类型的时候 default 是不需要的!
11. OC使用YES/NO C/C++中才使用true/false.
nil解析成NO,没有必要在条件语句中比较!
不要拿某样东西直接与YES比较,因为YES被定义为1和一个BOOL能被设置为8位.
如果BOOL属性的名字是一个形容词 is 可以省略
12. 三元操作符:单个条件求值常常需要它。提高代码清晰性和简洁性
13. 类构造方法,返回值类型是instancetype而不是id
14. CGRect x,y,width,height
CGRect frame = self.view.frame;
CGFloat x = CGRectGetMinX(frame);
CGFloat y = CGRectGetMinY(frame);
CGFloat width = CGRectGetWidth(frame);
CGFloat height = CGRectGetHeight(frame);
15. 黄金路径,左手边的代码应该是golden和happy路径
应该:
if (![someValue boolValue]) {
return;
}
// do something ……
不应该:
if ([someValue boolValue]) {
//do something
}
16. 错误处理
应该:
NSError *error;
if (![self trySomethingWithError:&error]) {
//handle error!
}
不应该:
NSError *error;
[self trySomethingWithError:&error];
if (error) {
//handle error!
}