iOS開發規範基礎版

1. 命名規範安全

1.1. 通用命名規則多線程

通常狀況下,通用命名規則適用於常量、變量、屬性、參數、方法、函數等。固然也有例外,下面咱們會針對於每一種狀況一一列舉。app

l 自我描述性異步

命名必須具備自我描述性,杜絕中文拼音、過分縮寫、或者無心義的命名方式。函數

l 禁止自我指涉工具

自我指涉是指在變量末尾增長了本身類型的一個後綴。性能

l 駝峯命名方式編碼

變量、屬性、參數、方法的名稱採用小寫字母開頭的駝峯命名方式。spa

舉例線程

命名

說明

insertObject:atIndex

規範的寫法

insert:at

不清晰,插入什麼?at表明什麼?

1.2. Method命名規範

方法名也要採用小寫字母開頭的駝峯命名方式,若是方法名以一箇中所周知的大寫縮略詞開頭(好比HTTP),該規則能夠忽略。

禁止使用下劃線「_」開頭

1.3. Accessor命名規範

暫無

1.4. Delegate方法命名規範

以觸發消息的對象名開頭,省略類名前綴而且首字母小寫,除非delegate方法只有一個參數,即觸發delegate方法調用的delegating對象,不然冒號是緊跟在類名後面的。

舉例

- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(int)row;

- (BOOL)applicationOpenUntitledFile:(NSApplication *)sender;

1.5. Category命名規範

避免category中的方法覆蓋系統方法,可使用前綴來區分系統方法和category方法,但前綴不要僅僅使用下劃線」_「。

1.6. Class命名規範

class的名稱應該由兩部分組成,前綴+名稱。即class的名稱應該包含一個前綴和一個名詞。

1.7. Protocol命名規範

若是protocol只是聲明瞭一堆相關方法,並不關聯class,以protocol結尾;若是proctocol不只聲明瞭一堆相關方法,還關聯了某個class,以delegate結尾。

舉例

NSObjectProtocol

UITableViewDelegate

1.8. Constant命名規範

對於整型常量,使用枚舉建立;對於浮點型常量,使用const修飾符建立。

2. 編碼規範

2.1. Block規範

調用block時須要對block判空,注意block潛在的引用循環。

2.2. UI規範

若是想要獲取window,不要使用view.window獲取。請使用[[UIApplication sharedApplication] keyWindow]。

2.3. 線程規範

不可變集合(好比NSArray)類默認是線程安全的,而可變集合類(好比NSMutableArray)不是線程安全的。禁止在多線程環境下直接訪問可變集合對象中的元素。應該先對其進行copy,而後訪問不可變集合對象內的元素。

2.4. 分支語句規範

l 對於條件語句的真假,由於 nil 解析爲 NO,因此沒有必要在條件中與它進行比較。永遠不要直接和 YES 和 NO進行比較,由於 YES 被定義爲 1,而 BOOL 能夠多達 8 位。

建議

if (isAwesome)

if (![someObject boolValue])

禁止這樣作

if ([someObject boolValue] == NO)

if (isAwesome == YES)

l 使用switch...case...語句的時候,不要丟掉default:。

2.5. 懶加載規範

l 一個對象的建立依賴於其餘對象。

l 一個對象在整個app過程當中,可能被使用,也可能不被使用。

l 一個對象的建立須要通過大量的計算或者比較消耗性能。

除以上三條以外,請不要使用懶加載。

懶加載本質上就是延遲初始化某個對象,因此,懶加載僅僅是初始化一個對象,而後對這個對象的屬性賦值。懶加載中不該該有其餘的沒必要要的邏輯性的代碼,若是有,請把那些邏輯性代碼放到合適的地方。

2.6. 多線程規範

l 禁止使用GCD的dispatch_get_current_queue()函數獲取當前線程信息。

l 禁止在非主線程中進行UI元素的操做。

l 若是須要進行大文件或者多文件的IO操做,禁止主線程使用,必須進行異步處理。

2.7. 註釋規範

l 非私有方法必須添加註釋

l 工具類等提供給你們共同使用的必須有詳細註釋

相關文章
相關標籤/搜索