代碼規(guī)范那些事

條件語句

條件語句體應該總是被大括號包圍。

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

用感嘆號來作為運算符。

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

使用多個 return 可以避免增加循環(huán)的復雜度,并提高代碼的可讀性。

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

  //Do something important
}
三元運算符

當三元運算符的第二個參數(shù)(if 分支)返回和條件語句中已經(jīng)檢查的對象一樣的對象的時候,下面的表達方式更靈巧:

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;

使用點符號會讓表達更加清晰并且?guī)椭鷧^(qū)分屬性訪問和方法調用。

屬性定義
  • 屬性可以存儲一個代碼塊。為了讓它存活到定義的塊的結束,必須使用 copy (block 最早在棧里面創(chuàng)建,使用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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容