1. 命名規範安全
1.1. 通用命名規則多線程
通常狀況下,通用命名規則適用於常量、變量、屬性、參數、方法、函數等。固然也有例外,下面咱們會針對於每一種狀況一一列舉。app
l 自我描述性異步
命名必須具備自我描述性,杜絕中文拼音、過分縮寫、或者無心義的命名方式。函數
l 禁止自我指涉工具
自我指涉是指在變量末尾增長了本身類型的一個後綴。性能
l 駝峯命名方式編碼
變量、屬性、參數、方法的名稱採用小寫字母開頭的駝峯命名方式。spa
舉例線程
命名 |
說明 |
insertObject:atIndex |
規範的寫法 |
insert:at |
不清晰,插入什麼?at表明什麼? |
1.2. Method命名規範
方法名也要採用小寫字母開頭的駝峯命名方式,若是方法名以一箇中所周知的大寫縮略詞開頭(好比HTTP),該規則能夠忽略。
禁止使用下劃線「_」開頭
暫無
以觸發消息的對象名開頭,省略類名前綴而且首字母小寫,除非delegate方法只有一個參數,即觸發delegate方法調用的delegating對象,不然冒號是緊跟在類名後面的。
舉例
避免category中的方法覆蓋系統方法,可使用前綴來區分系統方法和category方法,但前綴不要僅僅使用下劃線」_「。
class的名稱應該由兩部分組成,前綴+名稱。即class的名稱應該包含一個前綴和一個名詞。
若是protocol只是聲明瞭一堆相關方法,並不關聯class,以protocol結尾;若是proctocol不只聲明瞭一堆相關方法,還關聯了某個class,以delegate結尾。
舉例
NSObjectProtocol
UITableViewDelegate
對於整型常量,使用枚舉建立;對於浮點型常量,使用const修飾符建立。
調用block時須要對block判空,注意block潛在的引用循環。
若是想要獲取window,不要使用view.window獲取。請使用[[UIApplication sharedApplication] keyWindow]。
不可變集合(好比NSArray)類默認是線程安全的,而可變集合類(好比NSMutableArray)不是線程安全的。禁止在多線程環境下直接訪問可變集合對象中的元素。應該先對其進行copy,而後訪問不可變集合對象內的元素。
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:。
l 一個對象的建立依賴於其餘對象。
l 一個對象在整個app過程當中,可能被使用,也可能不被使用。
l 一個對象的建立須要通過大量的計算或者比較消耗性能。
除以上三條以外,請不要使用懶加載。
懶加載本質上就是延遲初始化某個對象,因此,懶加載僅僅是初始化一個對象,而後對這個對象的屬性賦值。懶加載中不該該有其餘的沒必要要的邏輯性的代碼,若是有,請把那些邏輯性代碼放到合適的地方。
l 禁止使用GCD的dispatch_get_current_queue()函數獲取當前線程信息。
l 禁止在非主線程中進行UI元素的操做。
l 若是須要進行大文件或者多文件的IO操做,禁止主線程使用,必須進行異步處理。
l 非私有方法必須添加註釋
l 工具類等提供給你們共同使用的必須有詳細註釋