淺談Objective-C編碼規范
淺談Objective-C編碼規范是本文要介紹的內容,主要講述了Objective-C的編碼規范。編碼規范的合理性,相信編程人員都知道是最需要注意的一個內容,不多說,先來看詳細內容講解。
格式化代碼
指針“*”號的位置 ▪ 如:NSString *varName;
空格 VS tabs ▪ 只允許使用空格,將編輯器設置為1個TAB = 2個字符縮進
每行的長度
每行最多不得超過100個字符
以15寸Macbook Pro的大小,每行100個字符時能***化地同時容下編輯器和iPhone模擬器
Google的80字符的標準有點少,這導致過于頻繁的換行(Objectve-C的代碼一般都很長)
通過 “Xcode => Preferences => TextEditing => 勾選Show Page Guide / 輸入
100 => OK” 來設置提醒 ◦ 方法的聲明和定義
在 - OR + 和返回值之間留1個空格,方法名和***個參數間不留空格。如:
- - (void)doSomethingWithString:(NSString *)theString {
- ...
- }
當參數過長時,每個參數占用一行,以冒號對齊。如:
- - (void)doSomethingWith:(GTMFoo *)theFoo
- }
- ...
- rect:(NSRect)theRect interval:(float)theInterval {
如果方法名比參數名短,每個參數占用一行,至少縮進4個字符,且為垂直對齊(而非使用冒號 對齊)。如:
- - (void)short:(GTMFoo *)theFoo
- }
- longKeyword:(NSRect)theRect
- evenLongerKeyword:(float)theInterval { ...
方法的調用 ▪ 調用方法沿用聲明方法的習慣。例外:如果給定源文件已經遵從某種習慣,繼續遵從那種習慣。 ▪ 所有參數應在同一行中,或者每個參數占用一行且使用冒號對齊。如:
- [myObject doFooWith:arg1 name:arg2 error:arg3];
或
- [myObject doFooWith:arg1 name:arg2
- error:arg3];
和方法的聲明一樣,如果無法使用冒號對齊時,每個參數一行、縮進4個字符、垂直對其(而非 使用冒號對齊)。如:
- [myObj short:arg1
- longKeyword:arg2
- evenLongerKeyword:arg3];
@public 和 @private ▪ @public 和 @private使用單獨一行,且縮進1個字符
Protocals類型標示符、代理名稱、尖括號間不留空格。該規則同樣適用于:類聲明、實例變量和方法聲明。如:
- @interface MyProtocoledClass : NSObject<NSWindowDelegate> { @private
- id<MyFancyDelegate> _delegate;
- } - (void)setDelegate:(id<MyFancyDelegate>)aDelegate; @end
如果類聲明中包含多個protocal,每個protocal占用一行,縮進2個字符。如: @interface CustomViewController : ViewController<
- AbcDelegate,
- DefDelegate >{
- }
命名 ◦ 類名
類名(及其category name 和 protocal name)的首字母大寫,寫使用首字母大寫的形式 分割單詞
在面向特定應用的代碼中,類名應盡量避免使用前綴,每個類都使用相同的前綴影響可讀性。
在面向多應用的代碼中,推薦使用前綴。如:GTMSendMessage ◦ Category Name
待完善 ◦ 方法名
方法名的首字母小寫,且使用首字母大寫的形式分割單詞。方法的參數使用相同的規則。 ▪ 方法名+參數應盡量讀起來像一句話(如:)。
在這里查看蘋果對方法命名的規范。 ▪ getter的方法名和變量名應相同。不允許使用“get”前綴。如:
- - (id) getDelegate; // 禁止
- - (id)delegate; // 對頭
本規則僅針對Objective-C代碼,C++代碼使用C++的習慣
變量名 ▪ 變量名應使用容易意會的應用全稱,且首字母小寫,且使用首字母大寫的形式分割單詞 ▪ 成員變量使用“_”作為前綴(如:“NSString *_varName;”。
雖然這與蘋果的標準(使用“_”作為后綴)相沖突,但基于以下原因,仍使用“_”作為前綴。 ▪ 使用“_”作為前綴,更容易在有代碼自動補全功能的IDE中區分“屬性
(self.userInfo)”和“成員變量(_userInfo)” ▪ 常量(#define, enums, const等)使用小寫“k”作為前綴,首字母大寫來分割單詞。如:
- kInvalidHandle
注釋 ◦ 待完善
Cocoa 和 Objective-C特有的規則 ◦ 成員變量使用@private。如:
- @interface MyClass : NSObject { @private
- id _myInstanceVariable;
- } // public accessors, setter takes ownership - (id)myInstanceVariable; - (void)setMyInstanceVariable:(id)theVar; @end
- Indentify Designated Initializer ▪ 待完善
- Override Desingated Initializer
小結:淺談Objective-C編碼規范的內容介紹完了,希望本文對你有所幫助。更多關于Objective-C的內容,請參考編輯推薦。