鍍金池/ 教程/ iOS/ 美化代碼
Case語句
美化代碼
參考資料
對象間的通訊
命名
條件語句
Protocols
NSNotification
面向切面編程
Categories
代碼組織

美化代碼

空格

  • 縮進使用 4 個空格。 永遠不要使用 tab, 確保你在 Xcode 的設(shè)置里面是這樣設(shè)置的。
  • 方法的大括號和其他的大括號(if/else/switch/while 等) 總是在同一行開始,在新起一行結(jié)束。

推薦:

if (user.isHappy) {
    //Do something
}
else {
    //Do something else
}

不推薦:

if (user.isHappy)
{
  //Do something
} else {
  //Do something else
}

* 方法之間應(yīng)該要有一個空行來幫助代碼看起來清晰且有組織。 方法內(nèi)的空格應(yīng)該用來分離功能,但是通常不同的功能應(yīng)該用新的方法來定義。 優(yōu)先使用 auto-synthesis。但是如果必要的話, @synthesize and @dynamic

  • 在實現(xiàn)文件中的聲明應(yīng)該新起一行。
  • 應(yīng)該總是讓冒號對其。有一些方法簽名可能超過三個冒號,用冒號對齊可以讓代碼更具有可讀性??偸怯妹疤枌ζ浞椒?,即使有代碼塊存在。

【疑問】

推薦:

[UIView animateWithDuration:1.0
                 animations:^{
                     // something
                 }
                 completion:^(BOOL finished) {
                     // something
                 }];

不推薦:

[UIView animateWithDuration:1.0 animations:^{
    // something 
} completion:^(BOOL finished) {
    // something
}];

如果自動對齊讓可讀性變得糟糕,那么應(yīng)該在之前把 block 定義為變量,或者重新考慮你的代碼簽名設(shè)計。

Line Breaks 換行

本指南關(guān)注代碼顯示效果以及在線瀏覽的可讀性,所以換行是一個重要的主題。

舉個例子:

self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];

一個像上面的長行的代碼在第二行以一個間隔(2個空格)延續(xù)

self.productsRequest = [[SKProductsRequest alloc] 
  initWithProductIdentifiers:productIdentifiers];

括號

在以下的地方使用 Egyptian風(fēng)格 括號 (譯者注:又稱 K&R 風(fēng)格,代碼段括號的開始位于一行的末尾,而不是另外起一行的風(fēng)格。關(guān)于為什么叫做 Egyptian Brackets,可以參考 http://blog.codinghorror.com/new-programming-jargon/ )

  • 控制語句 (if-else, for, switch)

非 Egyptian 括號可以用在:

  • 類的實現(xiàn)(如果存在)
  • 方法的實現(xiàn)
上一篇:代碼組織下一篇: