美文网首页
代码规范那些事

代码规范那些事

作者: 下雨之後 | 来源:发表于2016-10-24 09:19 被阅读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;
    

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

    属性定义
    • 属性可以存储一个代码块。为了让它存活到定义的块的结束,必须使用 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

    相关文章

      网友评论

          本文标题:代码规范那些事

          本文链接:https://www.haomeiwen.com/subject/vctluttx.html