参考资料:
https://github.com/raywenderlich/objective-c-style-guide
1.常量
使用类型常量,少用宏定义。
static NSString * const STMProjectName = @"GCDFetchFeed"
2.变量
变量名应该明确体现出功能,加上类型做后缀。
在使用之前,需要先对变量做初始化,并且初始化的地方离使用它的地方越近越好。
不要滥用全局变量,尽量少用它来传递值,通过参数传值可以减少功能模块间的耦合。
NSString *nameString = @"Tom";
nameLabel.text = nameString;
3.条件语句
条件语句的嵌套分支过多时,优先使用switch,运行速度更快。
推荐
if (!error) {
return success;
}
不推荐:
if (!error) return success;
4.函数
函数体积不宜过大,最好控制在百行代码以内。
如果函数内部逻辑多,我们可以分解成多个小逻辑,并将每个小逻辑提取出来作为一个单独的函数。
每个函数处理最小单位的逻辑,然后一层一层往上组合。这样我们就可以通过函数名明确那段逻辑处理的目的,提高代码的可读性。
需要注意的是,拆分成多个逻辑简单的函数后,要对函数的入参进行验证,提高代码的健壮性。
// 最小单位的逻辑函数
- (void)saveName:(NSString *)nameStr{
// 入参判断
if (!nameStr) { return; }
// 内容
}
5.类
类的头文件应该尽可能少地引入其他类的头文件。
可以通过 class 关键字来声明,然后在实现文件里引入需要的其他类的头文件。
#import <UIKit/UIKit.h>
@class Model;
@interface ViewController : UIViewController
@end
6.代码组织
用#pragma mark -按照此常规结构对功能分组和协议/委托实现中的方法进行分类。
#pragma mark - 搭建界面
#pragma mark - 网络请求
#pragma mark - 代理方法
#pragma mark - 封装方法
#pragma mark - 点击事件
7.间距
推荐
if(user.isHappy){
//做某事
} else {
//做某事
}
不推荐
if(user.isHappy)
{
//做某事
} else {
//做某事
}
推荐
[UIView animateWithDuration:1.0 animations:^{
// something
} completion:^(BOOL finished) {
// something
}];
不推荐
[UIView animateWithDuration:1.0
animations:^{
// something
}
completion:^(BOOL finished) {
// something
}];
8.枚举类型
使用enums时,建议使用新的固定基础类型规范,因为它具有更强的类型检查和代码完成功能。SDK现在包含一个宏,用于促进和鼓励使用固定的基础类型:NS_ENUM()
typedef NS_ENUM(NSInteger,RWTLeftMenuTopItemType){
RWTLeftMenuTopItemMain,
RWTLeftMenuTopItemShows,
RWTLeftMenuTopItemSchedule
};
9.布尔值
Objective-C使用YES和NO。
true,false应用于CoreFoundation,C或C ++代码。
推荐
if(someObject){}
if(![anotherObject boolValue ]){}
不推荐
if(someObject == nil){}
if([anotherObject boolValue ] == NO){}
if(isAwesome == YES){} //千万不要这样做。
if(isAwesome == true){} //永远不要这样做。
10.条件式编码
使用条件式编码时,少嵌套if语句,多使用返回语句。
推荐
- (void)someMethod {
if (![someOther boolValue]) {
return;
}
//Do something important
}
不推荐
- (void)someMethod {
if ([someOther boolValue]) {
//Do something important
}
}
网友评论