OC 第一次檢查命名規範思考與學習

參考地址:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.htmlhtml

任務:看完思考完之後修改本身項目中幾處命名有問題的代碼,有則改之 ,無則加勉。app

<一>基礎: **第一個原則:Clarity (清晰) (1).命名簡潔當然好,然是必定不要由於簡潔而影響了清晰度. 好的例子:insertObject:atIndex: , Good. 插入對象:在索引:xx. 壞的例子:insert:at: ,Not clear; what is being inserted? what does 「at」 signify? 不清楚;插入了什麼?at是什麼意思?框架

(2) .不要使用縮寫,即便很長也要把它們拼出來。 您可能認爲縮寫是衆所周知的,但它可能不是,特別是當開發人員遇到您的方法或函數名時,它具備不一樣的文化和語言背景。 若是要用縮寫參考:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/APIAbbreviations.html#//apple_ref/doc/uid/20001285-BCIHCGAEide

(3).避免命名歧義,多加註釋。(避免API名稱中的歧義,例如可能以多種方式解釋的方法名稱)函數

**第二個原則:Consistency (一致性)工具

(1).當您的類的方法應該利用多態性時,一致性尤爲重要。在不一樣的類中執行相同操做的方法應該具備相同的名稱。 例如:ui

  • (NSInteger)tag 。 Defined in NSView, NSCell, NSControl. 定義在NSView, NSCell, NSControl中。

(2).沒有自我參考,名字不該該是自我參照的。No Self Reference 。 Names shouldn’t be self-referential。 例子:能夠的 : NSString。 自我參照的:NSStringObject Self-referential.this

(3). 掩碼常量(所以能夠按位操做組合)是該規則的一個例外,通知名稱的常量也是如此。 Constants that are masks (and thus can be combined in bitwise operations) are an exception to this rule, as are constants for notification names.htm

例子:NSUnderlineByWordMask 。 NSTableViewColumnDidMoveNotification 。 都是能夠的。對象

參見方法參數,參考:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html#//apple_ref/doc/uid/20001282-1001865

<二>前綴: 前綴能夠防止第三方開發人員定義的符號與Apple定義的符號(以及Apple本身的框架中的符號)之間的衝突。 前綴有規定的格式。它由兩三個大寫字母組成,不使用下劃線或「子前綴」。下面是一些例子: NS Foundation ,IB Interface Builder。 在命名類、協議、函數、常量和typedef結構時使用前綴。命名方法時不要使用前綴;方法存在於由定義它們的類建立的名稱空間中。此外,不要使用前綴來命名結構的字段。

<三>排版約定(Typographic Conventions )

(1)對於由多個單詞組成的名稱,不要使用標點符號做爲名稱的一部分或分隔符(下劃線、破折號等);相反,應該將每一個單詞的首字母大寫,並將它們連在一塊兒(例如,將單詞連在一塊兒)——這就是所謂的「駱駝殼」。可是,請注意如下條件: 對於方法名,以小寫字母開頭,並將嵌入單詞的第一個字母大寫。不使用前綴。 fileExistsAtPath:isDirectory: 此準則的一個例外是方法名以衆所周知的首字母縮略詞開頭,例如TIFFRepresentation (NSImage)。

(2)對於函數和常量的名稱,使用與相關類相同的前綴,並將嵌入單詞的第一個字母大寫。 NSRunAlertPanel NSCellDisabled

(3)避免使用下劃線字符做爲前綴,表示方法名中的私有(容許使用下劃線字符做爲實例變量名的前綴)。蘋果保留使用這個約定。第三方使用可能致使名稱空間衝突;它們可能會在不知情的狀況下用本身的方法覆蓋現有的私有方法,從而致使災難性的後果。有關私有API應遵循的約定的建議,請參閱私有方法。

<四>頭文件(Header Files)

你如何命名頭文件是重要的,由於你使用的約定指出了什麼文件包含:

(1).聲明一個隔離的類或協議。若是類或協議不是組的一部分,則將其聲明放在一個單獨的文件中,該文件的名稱是已聲明的類或協議的名稱。

NSLocale.h The NSLocale class.

(2).聲明相關的類和協議。對於一組相關的聲明(類、類別和協議),將聲明放在一個以主類、類別或協議的名稱命名的文件中。 NSString.h . NSString and NSMutableString classes. NSLock.h . NSLocking protocol and NSLock, NSConditionLock, and NSRecursiveLock classes.

(3).包括框架頭文件。每一個框架都應該有一個以框架命名的頭文件,該頭文件包含框架的全部公共頭文件。 Foundation.h Foundation.framework.

向另外一個框架中的類添加API。若是在一個框架中聲明瞭另外一個框架中類的類別中的方法,則在原始類的名稱中添加「加法」;一個例子是應用程序工具包的nsbundleaddion .h頭文件。 相關函數和數據類型。若是您有一組相關的函數、常量、結構和其餘數據類型,請將它們放在一個適當命名的頭文件中,如NSGraphics.h (Application Kit)。

相關文章
相關標籤/搜索