Objective-C代碼規範(2016.1.12王彬),objectivec代碼規範

來源:互聯網
上載者:User

Objective-C代碼規範(2016.1.12王彬),objectivec代碼規範

 

第一話   官方代碼規範

Objective-C 編碼規範,內容來自蘋果、Google的文檔翻譯,自己的編碼經驗和對其它資料的總結。

概要

Objective-C 是一門物件導向的動態程式設計語言,主要用於編寫 iOS 和 Mac 應用程式。關於 Objective-C 的編碼規範,蘋果已經有很好的總結:

  • Apple Coding Guidelines for Cocoa

本文主要整合了對上述文檔的翻譯、作者自己的編程經驗和其他的相關資料,為公司總結出一份通用的編碼規範。

網站:http://www.cocoachina.com/ios/20150508/11780.html

 

第二話  自己的一些經驗之談

類(Class)命名原則

  就拿“NSMutableArray”來說 

  NS --- 首碼(Prefix)我的理解是表示類所屬的“包”,這裡的NS就表示的是Cocoa的基礎類庫,取公司名項目名什麼的。(NS是NextStep公司的簡寫,裡面的淵源就不細說了- -)首碼的意義就在於比較直觀的劃分了類的所屬和範圍。像Cocos2d裡的首碼就是CC,box2d裡面是B2,UserInterface->UI,CoreFoundation->CF,CoreGraphics->CG。如果我也能寫一個開源架構或模組的話,我應該會取“SY”或是“Sunny”吧 :)
  MutableArray --- 類名,簡短明確的形容類所表示的內容。首字母大寫,駝峰標示。另外值得注意的是,由於NSMutableArray是NSArray的擴充子類,本質上形容的都是Array,所以應該保留父類的識別字樣“Array”,但NSObject到NSArray不應該起名成NSArrayObject,也是避免了語義的重疊。

 

成員變數與屬性存取器(Accessor)命名原則

  這也是讓我糾結了挺久,一直不懂為什麼很多代碼裡面類成員變數出現了底線"_",而屬性存取方法@property聲明時不加底線,實現時@synthesize又令兩個名字相等。 

@interface SunnyTest : NSObject {    NSArray * _array;  }@property (nonatomic,retain) NSArray * array;@end

 

@implementation SunnyTest@synthesize array = _array;@end

  這樣做的原因很簡單,就是不暴露執行個體的成員變數,外界只能用@property聲明的存取名來訪問成員變數,所以就用下滑線加以區分。

  但在類內方法訪問成員變數時就直接使用帶底線的名字,個人認為不要用self.xxxxx來使用,因為使用存取器本來就是對外的,在內部使用可能會造成一些不必要的錯誤,比如:

self.array = [[NSArray alloc] init]; //記憶體泄露

  這時就會造成記憶體泄露,因為[[NSArray alloc] init]產生NSArray對象之後賦值給self.array,由於array的存取方法中包含retain,這會使retainCount變成2,而實際應該是1,記憶體泄露且很難發現。

  改成這樣的寫法也是蘋果官方推薦的。

_array = [[NSArray alloc] init];

 

方法(Method)起名規則

  一個規範的方法讀起來應該像一句完整的話,讀過之後便知函數的作用。執行性的方法應該以動詞開頭,小寫字母開頭,返回性的方法應該以返回的內容開頭,但之前不要加get。

 

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
+ (id)arrayWithArray:(NSArray *)array;

  如果有參數,函數名應該作為第一個參數的提示資訊,若有多個參數,在參數前也應該有提示資訊(一般不必加and)

  一些經典的操作應該使用約定的動詞,如initWith,insert,remove,replace,add等等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.