Objective-C编码规范:26个方面解决iOS开发问题(五)

  黄金路径

  当使用条件语句编码时,左手边的代码应该是"golden" 或 "happy"路径。也就是不要嵌套if语句,多个返回语句也是OK。

  应该:

- (void)someMethod {
  if (![someOther boolValue]) {
    return;
  }
  //Do something important
}

  不应该:

- (void)someMethod {
  if ([someOther boolValue]) {
    //Do something important
  }
}

  错误处理

  当方法通过引用来返回一个错误参数,判断返回值而不是错误变量。

  应该:

NSError *error;
if (![self trySomethingWithError:&error]) {
  // Handle Error
}

  不应该:

NSError *error;
[self trySomethingWithError:&error];
if (error) {
  // Handle Error
}

  在成功的情况下,有些Apple的APIs记录垃圾值(garbage values)到错误参数(如果non-NULL),那么判断错误值会导致false负值和crash。

  单例模式

  单例对象应该使用线程安全模式来创建共享实例。

+ (instancetype)sharedInstance {
  static id sharedInstance = nil;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    sharedInstance = [[self alloc] init];
  });
  return sharedInstance;
}

  这会防止possible and sometimes prolific crashes

  换行符

  换行符是一个很重要的主题,因为它的风格指南主要为了打印和网上的可读性。

  例如:

self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];

   一行很长的代码应该分成两行代码,下一行用两个空格隔开。

self.productsRequest = [[SKProductsRequest alloc] 
  initWithProductIdentifiers:productIdentifiers];

  Xcode工程

  物理文件应该与Xcode工程文件保持同步来避免文件扩张。任何Xcode分组的创建应该在文件系统的文件体现。代码不仅是根据类型来分组,而且还可以根据功能来分组,这样代码更加清晰。

  尽可能在target的Build Settings打开"Treat Warnings as Errors,和启用以下additional warnings。如果你需要忽略特殊的警告,使用Clang's pragma feature

  其他Objective-C编码规范

  如果我们的编码规范不符合你的口味,可以查看其他的编码规范:

  文章来源:GitHub,作者:raywenderlich.com Team 译者:刘耀柱@Sam_Lau_Dev

代码技巧

转载请关注公众号:代码技巧 回复:授权

本文链接地址:https://www.oudahe.com/p/372/