Objective-C開發編碼規範

針對本身的編碼檢查問題,改正爲如下編碼規範:閉包

1.函數

協議( Protocols )編碼

在書寫協議的時候注意用 <> 括起來的協議和類型名之間是沒有空格的,好比 IPCConnectHandler(), 這個規則適用全部書寫協議的地方,包括函數聲明、類聲明、實例變量等等:spa

2.code

閉包( Blocks )對象

根據 block 的長度,有不一樣的書寫規則:接口

  • 較短的 block 能夠寫在一行內。事件

  • 若是分行顯示的話, block 的右括號 } 應該和調用 block 那行代碼的第一個非空字符對齊。get

  • block 內的代碼採用 4 個空格 的縮進。編譯器

  • 若是 block 過於龐大,應該單獨聲明成一個變量來使用。

  • ^ 和 ( 之間, ^ 和 { 之間都沒有空格,參數列表的右括號 ) 和 { 之間有一個空格。

 

3.

字典

構造字典時,字典的 Key 和 Value 與中間的冒號 : 都要留有一個空格,多行書寫時,也能夠將 Value 對齊:

// 正確,冒號 ':' 先後留有一個空格
NSDictionary *option1 = @{
NSFontAttributeName : [NSFont fontWithName:@ "Helvetica-Bold"  size:12],
NSForegroundColorAttributeName : fontColor
};
 
4.
命名問題
1>
命名應該儘量的清晰和簡潔,但在 Objective-C 中,清晰比簡潔更重要。因爲 Xcode 強大的自動補全功能,咱們沒必要擔憂名稱過長的問題。

不要使用單詞的簡寫,拼寫出完整的單詞:

2>一致性

整個工程的命名風格要保持一致性,最好和蘋果 SDK 的代碼保持統一。不一樣類中完成類似功能的方法應該叫同樣的名字,好比咱們老是用 count 來返回集合的個數,不能在 A 類中使用 count 而在 B 類中使用 getNumber 。

 

 5.
實例變量

命名實例變量,在變量名前加上 _ 前綴(有些有歷史的代碼會將 _ 放在後面 ),其它和命名屬性同樣:

 
@implementation MyClass {
BOOL _showsTitle;
}
 
6.

命名常量( Constants )

若是要定義一組相關的常量,儘可能使用枚舉類型( enumerations ),枚舉類型的命名規則和函數的命名規則相同:

// 定義一個枚舉,注意帶有 `_` 的名稱是不會被使用的
typedef enum _NSMatrixMode {
NSRadioModeMatrix = 0,
NSHighlightModeMatrix = 1,
NSListModeMatrix = 2,
NSTrackModeMatrix = 3
} NSMatrixMode;
 
7.
定義常量
 
使用 const 定義浮點型或者單個的整數型常量,若是要定義一組相關的整數常量,應該優先使用枚舉。常量的命名規範和函數相同:
const float NSLightGray;
 
8.
宏定義
 
不要使用 #define 宏來定義常量,若是是整型常量,儘可能使用枚舉,浮點型常量,使用 const 定義。 #define 一般用來給編譯器決定是否編譯某塊代碼.
 
9.

命名通知( Notifications )

通知經常使用於在模塊間傳遞消息,因此通知要儘量地表示出發生的事件,通知的命名範式是:

 
[ 觸發通知的類名 ] + [Did | Will] + [ 動做 ] + Notification
 
10.
註釋
定義在頭文件裏的接口方法、屬性必需要有註釋!
// 註釋(注意空格問題)
 
11.

BOOL 的使用

BOOL 在 Objective-C 中被定義爲 signed char 類型,這意味着一個 BOOL 類型的變量不單單能夠表示 YES(1) 和 NO(0) 兩個值,因此永遠不要將 BOOL 類型變量直接和 YES 比較;

一樣的,也不要將其它類型的值做爲 BOOL 來返回,這種狀況下, BOOL 變量只會取值的最後一個字節來賦值,這樣極可能會取到 0 ( NO )。可是,一些邏輯操做符好比 &&,||,! 的返回是能夠直接賦給 BOOL 的;

另外 BOOL 類型能夠和 _Bool,bool 相互轉化,可是不能和 Boolean 轉化。  (啥意思,暫時還沒懂,知道的告訴我喲!!!)

 

12.

Delegate 要使用弱引用

一個類的 Delegate 對象一般還引用着類自己,這樣很容易形成引用循環的問題,因此類的 Delegate 屬性要設置爲弱引用。

13.

代碼中注意大量的輸出語句,不必;

定義方法以空行隔開;

代碼中注意大量的空行,注意代碼的緊湊性;

注意封裝,代碼的硬編碼問題;

宏定義注意所有大寫,值用()括起來.

 

暫時總結以上幾點,也歡迎大神們指教!!

相關文章
相關標籤/搜索