apple官方oc代碼的命名規(guī)范

OC蘋果官方標(biāo)準(zhǔn)

一、 通用標(biāo)準(zhǔn)Apple文檔地址:

  1. 命名要精簡且語義清晰(可讀性高),不能為了精簡犧牲可讀性.
    比如:方法 insertObject:atIndex: 相比 insert:at :來說,可讀性高;removeObject:和removeObjectAtIndex:相比remove:來說可讀性高。

  2. 不能使用單詞的縮寫命名.
    比如:destinationSelection相比destSel來講,可讀性更高。

  3. 標(biāo)準(zhǔn)2的例外:一些常用的單詞縮寫,可以繼續(xù)使用.
    比如:alloc func max rect等常用名詞。

  4. 避免可能引起歧義的命名.
    比如:sendPort 函數(shù)名,讓人搞不清是函數(shù)功能是發(fā)送一個(gè)port還是返回port。

  5. 與cocoa代碼的接口命名保持一致,尤其是在自己編寫的具有多態(tài)性類的方法時(shí)。
    比如:initWithFrame等方法,其他方法可以參考cocoa的頭文件。

  6. 前綴的使用范圍.
    前綴由一個(gè)以上的大寫字母組成,如UI,NS等。前綴可以用在類名,協(xié)議名,函數(shù)名,常數(shù)名,typedef的結(jié)構(gòu)體名;不要用在類的方法名中,也不要用于結(jié)構(gòu)體(未typedef)。

二、 類名和協(xié)議名規(guī)范apple文檔

協(xié)議名不能與類名混淆,即協(xié)議名聽起來不能像類名。通用的方式是使用動(dòng)名詞來命名協(xié)議。比如,NSLocking比NSLock更合適作為協(xié)議名,因?yàn)榍罢吒幌耦惷?/p>

三、 頭文件命名規(guī)范apple文檔

  1. 聲明的類(或類別、協(xié)議)不是一個(gè)類(或類別,協(xié)議)的集合時(shí),應(yīng)該將類(或類別,協(xié)議)聲明在一個(gè)獨(dú)立的頭文件中。
    例如:NSLocal.h中只聲明NSLocal類。

  2. 聲明的類(或類別、協(xié)議)屬于一個(gè)類(或類別,協(xié)議)的集合時(shí),將所有類(或類別,協(xié)議)放在一起,某個(gè)頭文件中。
    例如: NSString.h文件中,聲明了NSString和NSMutableString類。

  3. 包含框架頭文件時(shí),每個(gè)框架應(yīng)該對(duì)應(yīng)一個(gè)頭文件
    例如:Foundation.framework位于Foundation.h頭文件中。

  4. 相關(guān)的函數(shù),常量,結(jié)構(gòu)體,和其他數(shù)據(jù)類型,應(yīng)該定義在同一個(gè)頭文件中。
    例如:NSGraphics.h頭文件中聲明的是繪圖相關(guān)的函數(shù),常量等。
    四、 方法命名規(guī)范Apple文檔鏈接

  5. 命名方法的時(shí)候,避免使用前綴,應(yīng)該以小寫字母打頭。
    避免 NSLock樣式的用法,應(yīng)使用 initWithFrame的駝峰式。

  6. 方法實(shí)現(xiàn)的內(nèi)容是執(zhí)行某個(gè)操作時(shí),方法名的開頭應(yīng)為動(dòng)詞
    例如:- (void)invokeWithTarget:(id)target;方法。
    不要使用do或does作為名字的一部分,不要將形容詞或副詞放在動(dòng)詞前。

  7. 屬性的讀寫方法中的讀方法,不必使用get等前綴
    例如:方法 - (NSSize)cellSize;返回cell尺寸
    不必寫成: - (NSSize)getCellSize;

  8. 對(duì)于多個(gè)參數(shù)的方法,每個(gè)參數(shù)應(yīng)使用關(guān)鍵詞修飾
    例如:- (void)sendAction:(SEL)aSelector
    toObject:(id)anObject
    forAllCells:(BOOL)flag;
    而不能寫成- (void)sendAction:(SEL)aSelector
    :(id)anObject
    :(BOOL)flag;

  9. 方法名中,位于形參之前的詞應(yīng)該修飾參數(shù)
    例如:- (id)viewWithTag:(NSInteger)aTag;
    而不應(yīng)該寫成 - (id)taggedView:(int)aTag;

  10. 繼承于已存在的方法,并且較已存在的方法參數(shù)更多,使用范圍更細(xì)致的方法,應(yīng)將新增的參數(shù)加在已存在函數(shù)的后面
    例如:- (id)initWithFrame:(CGRect)frameRect;和

  • (id)initWithFrame:(NSRect)frameRect
    mode:(int)aMode
    cellClass:(Class)factoryId
    numberOfRows:(int)rowsHigh
    numberOfColumns:(int)colsWide;
  1. 不要使用and連接相關(guān)聯(lián)的屬性
    例如:- (int)runModalForDirectory:(NSString *)path
    file:(NSString *) name
    types:(NSArray *)fileTypes;
    而不要寫成:
  • (int)runModalForDirectory:(NSString *)path
    andFile:(NSString *)name
    andTypes:(NSArray *)fileTypes;
  1. 應(yīng)該使用and連接兩個(gè)無關(guān)聯(lián)的動(dòng)作
  • (BOOL)openFile:(NSString *)fullPath
    withApplication:(NSString *)appName
    andDeactivate:(BOOL)flag;
  1. 屬性的讀寫方法:
    如果屬性是一個(gè)名詞,他的讀寫方法應(yīng)該寫成如下形式:
    - (NSString *)title;
    - (void)setTitle:(NSString *)aTitle;
    如果屬性是一個(gè)形容詞,讀寫方法應(yīng)寫成如下形式:
    - (BOOL)isEditable;
    - (void)setEditable:(BOOL)flag;
    如果屬性是一個(gè)動(dòng)詞,其讀寫方法應(yīng)該如下形式:
    - (BOOL)showsAlpha;
    - (void)setShowsAlpha:(BOOL)flag;

  2. 當(dāng)方法中包含的動(dòng)詞的過去分詞為形容詞時(shí),不要使用過去分詞
    例如: - (void)setAcceptsGlyphInfo:(BOOL)flag;
    不要寫成 - (void)setGlyphInfoAccepted:(BOOL)flag;

  3. 可以使用情態(tài)動(dòng)詞 can,should,will等,而不要使用do或does

  4. 在方法同時(shí)返回(或同時(shí)修改)多個(gè)值時(shí),方法名使用get為開頭。
    如:- (void)getLineDash:(float *)pattern
    count:(int *)count
    phase:(float *)phase;

  5. 委托方法(委托協(xié)議)命名
    方法開頭應(yīng)該是能標(biāo)識(shí)調(diào)用此方法的類的對(duì)象。
    例如: - (BOOL)tableView:(NSTableView *)tableView
    shouldSelectRow:(int)row;和
    - (BOOL)application:(NSApplication *)sender
    openFile:(NSString *)filename;

  6. 使用will或did來表示委托方法要運(yùn)行,或已經(jīng)運(yùn)行
    例如:- (void)browserDidScroll:(NSBrowser *)sender;
    - (void)viewWillAppear:(BOOL)animated;

  7. 表示集合的類的方法命名規(guī)范
    集合類應(yīng)該具備增刪元素,返回全部元素的方法
    例如:- (void)addLayoutManager:(NSLayoutManager *)obj;
    - (void)removeLayoutManager:(NSLayoutManager *)obj;
    - (NSArray *)layoutManagers;
    如果集合類中元素為無序的,返回類型應(yīng)該是NSSet而不應(yīng)是NSArray類型。

需要在集合中間添加刪除元素時(shí),方法應(yīng)該使用:
- (void)insertLayoutManager:(NSLayoutManager *)obj
atIndex:(int)index;
- (void)removeLayoutManagerAtIndex:(int)index;形式

  1. 方法的參數(shù)命名規(guī)范
    首字母小寫,駝峰形式;不要使用pointer或者ptr在參數(shù)名中;避免使用只包含一個(gè)或兩個(gè)字母的參數(shù)名;不要使用只省略了幾個(gè)字母的單詞縮寫。
    ?蝪? 函數(shù),屬性,常量等的命名規(guī)范Apple官方地址:
    1.區(qū)別于類方法的命名方式,函數(shù)命名有兩點(diǎn)明顯區(qū)別:
    有固定的前綴,如NSHighlight;緊挨前綴之后的首字母大寫。
    盡量以函數(shù)的作用或影響來給函數(shù)命名,并以動(dòng)詞開頭,如
    float NSHeight(NSRect aRect)。
    如果函數(shù)的返回值是引用類型,在函數(shù)名中使用get,如
    const char *NSGetSizeAndAlignment(const char *typePtr, unsigned int
    *sizep, unsigned int *alignp)
    2.屬性是bool類型的,除非強(qiáng)調(diào)成員變量的讀屬性,否則使用is打頭。
    3.常量的命名規(guī)范
    值為整型的互相關(guān)聯(lián)的數(shù)個(gè)常量,應(yīng)該寫在命名的枚舉類型中。
    如:
    typedef enum _NSMatrixMode {
    NSRadioModeMatrix = 0,
    NSHighlightModeMatrix = 1,
    NSListModeMatrix = 2,
    NSTrackModeMatrix = 3
    } NSMatrixMode;

    可以使用未命名的枚舉,針對(duì)位掩碼的賦值,如
    enum {
    NSBorderlessWindowMask = 0,
    NSTitledWindowMask = 1 << 0,
    NSClosableWindowMask = 1 << 1,
    NSMiniaturizableWindowMask = 1 << 2,
    NSResizableWindowMask = 1 << 3
    };

六.其他命名規(guī)范
不要使用#define來聲明常量。對(duì)應(yīng)整型的常數(shù),應(yīng)使用命名的枚舉來定義;對(duì)于浮點(diǎn)數(shù)常量,應(yīng)該用const關(guān)鍵詞修飾。

預(yù)編譯 #ifdef 定義的名,應(yīng)使用全大寫的單詞,如 #ifdef DEBUG

由編譯器生成的宏,其前后應(yīng)有雙下劃線標(biāo)識(shí),如MACH

通知的命名規(guī)范。
形式如下:
相關(guān)的類 + [did或will] + 名字中唯一標(biāo)識(shí) + Notification
如,NSApplicationDidBecomeActiveNotification

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 代碼格式 使用空格而不是制表符 Tab 不要在工程里使用 Tab 鍵,使用空格來進(jìn)行縮進(jìn)。在 Xcode > Pr...
    small_Sun閱讀 1,469評(píng)論 1 3
  • iOS編程規(guī)范0規(guī)范 0.1前言 為??高產(chǎn)品代碼質(zhì)量,指導(dǎo)廣大軟件開發(fā)人員編寫出簡潔、可維護(hù)、可靠、可 測試、高效...
    iOS行者閱讀 4,620評(píng)論 21 35
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,077評(píng)論 0 9
  • 推薦文章:禪與 Objective-C 編程藝 前言 為??高產(chǎn)品代碼質(zhì)量,指導(dǎo)廣大軟件開發(fā)人員編寫出簡潔、可維護(hù)、...
    MurtoTien閱讀 2,945評(píng)論 0 1
  • 說起教育,你會(huì)想到什么? 成績、高考、大學(xué)、學(xué)歷…… 以上都只是一些與教育有關(guān)的代名詞,教育不僅僅局限于學(xué)校,家庭...
    隨舒閱讀 1,487評(píng)論 16 31

友情鏈接更多精彩內(nèi)容