iOS代碼規(guī)范

變量

  • 變量名稱遵循駝峰命名法則
  • 變量名稱采用英文命名且命名所見即所得,明確變量的意義。不得存在拼音或含糊不清的英文表達(dá)
  • 變量的指針位置遵循以下寫法NSString *userName; //指針需要靠近變量名而不是變量類型
  • 成員變量需要加上以m_ 為前綴,如:m_userName

函數(shù)

  • 函數(shù)需按照以下寫法:
  - (void)exampleFuntion:(NSString *)param { 
      //函數(shù)開始符- 與(void)之間要有一個(gè)空格
      //{}首個(gè)符號不能換行且需要與參數(shù)留有一個(gè)空格
}
  • 如果函數(shù)參數(shù)有多個(gè)的時(shí)候,將每個(gè)參數(shù)單獨(dú)拆成一行,每個(gè)參數(shù)的冒號對齊
 - (void)doSomethingWith:(NSString *)theFoo
                     rect:(CGRect)rect
                 interval:(CGFloat)interval {
      ...
}
  • 方法調(diào)用的時(shí)候應(yīng)盡量保持與方法聲明的格式一致。當(dāng)格式的風(fēng)格有多種選擇時(shí),新的代碼要與已有代碼保持一致
    調(diào)用時(shí)所有參數(shù)應(yīng)該在同一行:
  [myObject doFooWith:arg1 name:arg2 error:arg3];

或者每行一個(gè)參數(shù),以冒號對齊:

[myObject doFooWith:arg1 
                 name:arg2 
                error:arg3];

協(xié)議名

  • 類型標(biāo)識符和尖括號內(nèi)的協(xié)議名之間,不能有任何空格
    這條規(guī)則適用于類聲明、實(shí)例變量以及方法聲明。例如:
@interface MyProtocoledClass : NSObject<NSWindowDelegate> { 
    @private id<MyFancyDelegate> delegate_;
}
  - (void)setDelegate:(id<MyFancyDelegate>)aDelegate;
 @end

注釋

  • 注釋采用VVDocument 工具進(jìn)行注釋

nil的檢查

*要注意檢查判斷邊界

枚舉

采用如下方式寫枚舉

typedef NS_ENUM(NSInteger, UITableViewStyle) {
    UITableViewStylePlain,                         // regular table view
    UITableViewStyleGrouped     // preferences style table view
};

宏定義

  • 宏定義都寫在框架統(tǒng)一的文件里面

pragma Mark

pragma mark -是一個(gè)在類內(nèi)部組織代碼并且?guī)椭惴纸M方法實(shí)現(xiàn)的好辦法。 我們建議使用 #pragma mark -來分離:

  • 不同功能組的方法
  • protocols 的實(shí)現(xiàn)
  • 對父類方法的重寫
 - (void)dealloc { /* ... */ }
 - (instancetype)init { /* ... */ }
 #pragma mark - View Lifecycle (View 的生命周期)
 - (void)viewDidLoad { /* ... */ }
 - (void)viewWillAppear:(BOOL)animated { /* ... */ }
 - (void)didReceiveMemoryWarning { /* ... */ }
 #pragma mark - Custom Accessors (自定義訪問器)
 - (void)setCustomProperty:(id)value { /* ... */ }
 - (id)customProperty { /* ... */ }
 #pragma mark - IBActions 
 - (IBAction)submitData:(id)sender { /* ... */ }
 #pragma mark - Public
  - (void)publicMethod { /* ... */ }
 #pragma mark - Private
 - (void)zoc_privateMethod { /* ... */ }
 #pragma mark - UITableViewDataSource
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { /* ... */ }
 #pragma mark - ZOCSuperclass
// ... 重載來自 ZOCSuperclass 的方法
 #pragma mark - NSObject
 - (NSString *)description { /* ... */ }

self 的循環(huán)引用

當(dāng)使用代碼塊和異步分發(fā)的時(shí)候,要注意避免引用循環(huán)。 總是使用 weak
來引用對象,避免引用循環(huán)。此外,把持有 block 的屬性設(shè)置為 nil (比如self.completionBlock = nil
) 是一個(gè)好的實(shí)踐。它會(huì)打破 block 捕獲的作用域帶來的引用循環(huán)。

**例子:**
__weak __typeof(self) weakSelf = self;
[self executeBlock:^(NSData *data, NSError *error) { 
[weakSelf doSomethingWithData:data];
}];

**不要這樣:**
[self executeBlock:^(NSData *data, NSError *error) { 
[self doSomethingWithData:data];
}];

**多個(gè)語句的例子:**
__weak __typeof(self)weakSelf = self;
[self executeBlock:^(NSData *data, NSError *error) { 
    __strong __typeof(weakSelf) strongSelf = weakSelf;
     if (strongSelf) { 
          [strongSelf doSomethingWithData:data];
          [strongSelf doSomethingWithData:data];
 }
}];

**不要這樣:**
__weak __typeof(self)weakSelf = self;
[self executeBlock:^(NSData *data, NSError *error) {
 [weakSelf doSomethingWithData:data];
 [weakSelf doSomethingWithData:data];
}];

待續(xù)...

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

相關(guān)閱讀更多精彩內(nèi)容

  • 一、命名規(guī)范 1、統(tǒng)一要求含義清楚,盡量做到不需要注釋也能了解其作用,若做不到,就加注釋,使用全稱,不使用縮寫。 ...
    Untils閱讀 622評論 0 0
  • iOS編程規(guī)范0規(guī)范 0.1前言 為??高產(chǎn)品代碼質(zhì)量,指導(dǎo)廣大軟件開發(fā)人員編寫出簡潔、可維護(hù)、可靠、可 測試、高效...
    iOS行者閱讀 4,609評論 21 35
  • 命名規(guī)范 小駝峰命名法(CamelCase):第一個(gè)單詞小寫字母開頭,其他單詞首字母大寫; 大駝峰命名法(Pasc...
    廖丹_18be閱讀 454評論 0 1
  • 方法聲明與定義: 1.星號前統(tǒng)一要求需要輸入空格 2.方法體左大括號于方法名的右側(cè) 3.-或者+與返回類型之間需要...
    GilbertW閱讀 422評論 0 0
  • 823fdd1d51c4閱讀 113評論 0 0

友情鏈接更多精彩內(nèi)容