代码规范那些事

条件语句

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

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;

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

属性定义
  • 属性可以存储一个代码块。为了让它存活到定义的块的结束,必须使用 copy (block 最早在栈里面创建,使用copy让 block 拷贝到堆里面去)
  • 描述BOOL属性的词如果是形容词,那么setter不应该带is前缀,但它对应的 getter 访问器应该带上这个前缀,如:
@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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容