淺談Objective-C編碼規範

來源:互聯網
上載者:User

淺談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個空格,方法名和第一個參數間不留空格。如:

 
  1. - (void)doSomethingWithString:(NSString *)theString {  
  2. ...  

當參數過長時,每個參數佔用一行,以冒號對齊。如:

 
  1. - (void)doSomethingWith:(GTMFoo *)theFoo  
  2. }  
  3. ...  
  4. rect:(NSRect)theRect interval:(float)theInterval { 

如果方法名比參數名短,每個參數佔用一行,至少縮排4個字元,且為垂直對齊(而非使用冒號 對齊)。如:

 
  1. - (void)short:(GTMFoo *)theFoo  
  2. }  
  3. longKeyword:(NSRect)theRect  
  4. evenLongerKeyword:(float)theInterval { ... 

方法的調用 ▪ 調用方法沿用聲明方法的習慣。例外:如果給定源檔案已經遵從某種習慣,繼續遵從那種習慣。 ▪ 所有參數應在同一行中,或者每個參數佔用一行且使用冒號對齊。如:

 
  1. [myObject doFooWith:arg1 name:arg2 error:arg3]; 

 
  1. [myObject doFooWith:arg1 name:arg2  
  2. error:arg3]; 

和方法的聲明一樣,如果無法使用冒號對齊時,每個參數一行、縮排4個字元、垂直對其(而非 使用冒號對齊)。如:

 
  1. [myObj short:arg1  
  2. longKeyword:arg2  
  3. evenLongerKeyword:arg3]; 

@public 和 @private ▪ @public 和 @private使用單獨一行,且縮排1個字元

Protocals類型標示符、代理名稱、角括弧間不留空格。該規則同樣適用於:類聲明、執行個體變數和方法聲明。如:

 
  1. @interface MyProtocoledClass : NSObject<NSWindowDelegate> { @private  
  2. id<MyFancyDelegate> _delegate;  
  3. } - (void)setDelegate:(id<MyFancyDelegate>)aDelegate; @end 

如果類聲明中包含多個protocal,每個protocal佔用一行,縮排2個字元。如: @interface CustomViewController : ViewController<

 
  1. AbcDelegate,  
  2. DefDelegate >{  

命名 ◦ 類名

類名(及其category name 和 protocal name)的首字母大寫,寫使用首字母大寫的形式 分割單詞

在面向特定應用的代碼中,類名應盡量避免使用首碼,每個類都使用相同的首碼影響可讀性。

在面向多應用的代碼中,推薦使用首碼。如:GTMSendMessage ◦ Category Name

待完善 ◦ 方法名

方法名的首字母小寫,且使用首字母大寫的形式分割單詞。方法的參數使用相同的規則。 ▪ 方法名+參數應盡量讀起來像一句話(如:)。

在這裡查看蘋果對方法命名的規範。 ▪ getter的方法名和變數名應相同。不允許使用“get”首碼。如:

 
  1. - (id) getDelegate; // 禁止  
  2. - (id)delegate; // 對頭  

本規則僅針對Objective-C代碼,C++代碼使用C++的習慣

變數名 ▪ 變數名應使用容易意會的應用全稱,且首字母小寫,且使用首字母大寫的形式分割單詞 ▪ 成員變數使用“_”作為首碼(如:“NSString *_varName;”。

雖然這與蘋果的標準(使用“_”作為尾碼)相衝突,但基於以下原因,仍使用“_”作為首碼。 ▪ 使用“_”作為首碼,更容易在有代碼自動補全功能的IDE中區分“屬性

(self.userInfo)”和“成員變數(_userInfo)” ▪ 常量(#define, enums, const等)使用小寫“k”作為首碼,首字母大寫來分割單詞。如:

 
  1. kInvalidHandle 

注釋 ◦ 待完善

Cocoa 和 Objective-C特有的規則 ◦ 成員變數使用@private。如:

 
  1. @interface MyClass : NSObject { @private  
  2. id _myInstanceVariable;  
  3. } // public accessors, setter takes ownership - (id)myInstanceVariable; - (void)setMyInstanceVariable:(id)theVar; @end  
  4.  Indentify Designated Initializer ▪ 待完善  
  5.  Override Desingated Initializer 

小結:淺談Objective-C編碼規範的內容介紹完了,希望本文對你有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.