iOS 常见的代码规范

551 阅读2分钟

参考资料: github.com/raywenderli…

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
  }
}