Objective-C开发编码规范

ps:看样子 这里是很久前在其他地方搞的...

点语法的使用:不建议使用点语法调用方法,只用来访问属性。这样做是为了防止代码可读性问题。

例:(正确)使用点语法访问属性

NSString *oldName = object.name;
object.name = @"cai";

(错误)不要使用点语法调用方法

NSArray *array = @[@"data"];
NSUInteger number = array.count;

nil检查

因为在Objective-C中向nil发送命令是不会抛出异常或者导致崩溃的,只是完全的“什么都不干”,所以,只在程序中使用nil来做逻辑上的检查。另外,不要使用诸如nil == Object 或者 Object == nil的形式来判断

例:

//正确,直接判断
if (!objc) {
  ...
}
//错误,不用使用nil == objc的形式
if (nil == objc) {
  ...
}

建议使用语法糖(好像也叫快速创建)

使用语法糖能使代码更简洁
例:

NSNumber *test = @66;

BOOL的使用

BOOL在Objective-C中被定义为signed char类型,这意味着一个BOOL类型的变量不仅仅可以表示YES(1)和NO(0)两个值,所以永远不要将BOOL类型变量直接和YES比较:

//错误,无法确定great的值是否是YES(1),不要将BOOL值直接与YES比较
     BOOL great = [foo isGreat];
     if (great == YES)
          //…be great!
     //正确
     BOOL great = [foo isGreat];
     if (great)
           //… be great!

同样地,也不要将其它类型的值作为BOOL来返回,这种情况下,BOOL变量只会取值的最后一个字节来赋值,这样很可能会取到0(NO)。但是,一些逻辑操作符比如&& || !的返回是可以直接赋给BOOL的:

 //错误,不要将其它类型转化为BOOL返回
- (BOOL)isBold {
  return [selffontTraits] & NSFontBoldTrait;
}
- (BOOL)isValid {
  return [selfstringValue];
}
//正确
- (BOOL)isBold {
  return ([selffontTraits] & NSFontBoldTrait) ? YES : NO;
}
//正确,逻辑操作符可以直接转化为BOOL
- (BOOL)isValid {
  return [selfstringValue] != nil;
}
- (BOOL)isEnabled {
  return [selfisValid] && [self isBold];
}

不要使用new方法:
尽管很多时候能用new代替alloc/init方法,但这可能会导致调试内存时,出现不可预料的问题。Cocoa的规范就是使用alloc init方法,使用new会让一些读者困惑。

你可能感兴趣的:(Objective-C开发编码规范)