代码规范学习笔记
2015-12-17 09:43
351 查看
代码规范:注意事项
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!
}
相关文章推荐
- spring-security-oauth2服务端和client端入门01--代码编译及服务启动
- Java中事件分发线程
- Spring基于@AspectJ AOP例子
- Mybatis3源码分析(01)-前期准备
- Asp.Net MVC3 简单入门详解过滤器Filter
- c++中指定显式模板实参问题
- 记录ScheduledExecutorService使用中不工作情况
- QT5.5.0+VS2013(X64)+hidapi的USB继续深究之 QT的汉字显示
- 为什么Java字符串是不可变对象?
- FTP协议基础
- Spring和Mybatis整合时无法读取properties的处理方案
- JMeter学习(十八)JMeter测试Java(二)
- JMeter学习(十七)JMeter测试Java
- python知识—切片/迭代
- spring装配bean
- 2.2.3 Analyzing the output 分析对用户推荐书目的结果(2)
- 网站管理asp
- PHPSTORM 与 Xdebug 配合调试
- Java赋值操作符
- Java系列: 关于LinkedList的 ListIterator的add和remove