代码规范那些事

2016-10-24  本文已影响11人  下雨之後
条件语句

条件语句体应该总是被大括号包围。

if (!error) {
    return success;
}
nil 和 BOOL 检查

用感叹号来作为运算符。

if (someObject) { ...
if (!someObject) { ...
黄金大道

使用多个 return 可以避免增加循环的复杂度,并提高代码的可读性。

- (void)someMethod {
  if (![someOther boolValue]) {
      return;
  }

  //Do something important
}
三元运算符

当三元运算符的第二个参数(if 分支)返回和条件语句中已经检查的对象一样的对象的时候,下面的表达方式更灵巧:

result = object ? : [self createObject];
常量命名

应该以驼峰法命名,并以相关类名作为前缀。

static const NSTimeInterval ZOCSignInViewControllerFadeOutAnimationDuration = 0.4;
可变类型

推荐使用 NSMutableArray, NSMutableString 这样的类。
应该避免下面这样:

NSMutableArray *aMutableArray = [@[] mutableCopy];
Init 和 Dealloc

永远不要在 init (以及其他初始化方法)和dealloc方法中里面用 getter 和 setter 方法,你应当直接访问实例变量。

点符号

当使用 setter getter 方法的时候尽量使用点符号。应该总是用点符号来访问以及设置属性。例如:

view.backgroundColor = [UIColor orangeColor];
[UIApplication sharedApplication].delegate;

不要这样:

[view setBackgroundColor:[UIColor orangeColor]];
UIApplication.sharedApplication.delegate;

使用点符号会让表达更加清晰并且帮助区分属性访问和方法调用。

属性定义
@property (nonatomic, assign, getter=isEditable) BOOL editable;
NSNotification
// Foo.h
extern NSString * const ZOCFooDidBecomeBarNotification

// Foo.m
NSString * const ZOCFooDidBecomeBarNotification = @"ZOCFooDidBecomeBarNotification";

参考:
Objc Zen Book(禅与 Objective-C 编程艺术)
英文原址:https://github.com/objc-zen/objc-zen-book
中文翻译:https://github.com/oa414/objc-zen-book-cn

上一篇 下一篇

猜你喜欢

热点阅读