【翻譯】蘋果官網的命名規範之 Naming Properties and Data Types

丶Pz發表於2016-03-16

蘋果官方原文:Naming Properties and Data Types

前言:純屬練習英語和學習。翻譯錯誤和不通順的地方敬請諒解和指正。O(∩_∩)O

屬性和資料型別的命名

本節講述了屬性定義、變數、常量、通知和異常的常用命名規範。

 

l 定義屬性和變數

一個屬性定義會影響該屬性的訪問方法的定義。所以屬性的命名規範大體上和訪問器(getter,setter)的命名規範是一致的。如果一個屬性是表達一個名詞或者動詞,那麼定義如下:

@property(…) type nounOrVerb

例如:

@property(strong) NSString *title;

@property(assign) BOOL showsAlpha;

如果一個屬性名稱為一個形容詞,例如可編輯的(editable),通常忽略is 字首,但是需要為get訪問器新增慣用的命名,即isEditable,例如:

@property(assign,getter=isEditable) BOOL editable;

在許多情況下,當你宣告瞭一個屬性並且同時合成了一個對應的例項變數。確保該例項變數精確的描述了該屬性的含義。通常,你最好不要直接訪問變數,你需要使用訪問器去訪問該變數。(你可以在init和dealloc方法內直接訪問變數)。一般給例項變數新增一個下劃線做字首來表明該變數。例如:

@implementation MyClass{
        BOOL _showsTitle;
}

如果你通過定義屬性來合成一個變數,在@synthesize中為它指定一個變數名稱

@implementation MyClass

@synthesize showsTitle =_showsTitle;

  當你為一個類新增變數的時候,你需要在腦海中注意以下幾點:

1.避免顯示的定義一個公共的變數,開發者應該關心一個介面而不是關注一個介面如何儲存的資料細節。你可以通過宣告屬性並且合成相對應的變數的方式來避免直接定義變數。

2.如果你需要(在介面)定義一個變數,最好加上 @private 或者 @protected,如果你希望自己的類被繼承,繼承的類需要直接訪問該變數獲取資料,那麼用@protected 指令

3.如果一個變數是可訪問的。確保你寫了該變數訪問方法。(如果可能的話,定義屬性吧,@property 會自動生成 getter setter方法)

l 常量

常量的命名規則通常取決於該常量的建立方式。

列舉型別的常量

    用列舉來實現一組相關連的integer型別的常量。

    列舉常量的定義命名方式遵循 functions命名規範。下面看一個NSMatrix.h中  的例子:

typedef enum _NSMatrixMode {
    NSRadioModeMatrix           = 0,
    NSHighlightModeMatrix       = 1,
    NSListModeMatrix            = 2,
    NSTrackModeMatrix           = 3
} NSMatrixMode;

注意 typedef 是可以省略的,你可以建立一個沒有命名的列舉,例如:

enum {
    NSBorderlessWindowMask      = 0,
    NSTitledWindowMask          = 1 << 0,
    NSClosableWindowMask        = 1 << 1,
    NSMiniaturizableWindowMask  = 1 << 2,
    NSResizableWindowMask       = 1 << 3
 
};

用const建立常量

可以用const 建立一個float型別的常量。同樣也可以建立一個integer型別的常量,如果它和其他常量不相關的話。否則,還是用列舉吧。用const定義常量的方式如下:

const float NSLightGray;

命名規則同列舉命名規則一樣。

其他型別的常量

一般而言,不要用#define 預處理命令建立常量。對於integer型別的常量,用列舉,對於float型別的常量用const定義。

使用大寫字母符號的預處理指令來確定一段程式碼是否要執行,例如:

#ifdef DEBUG

注意由系統定義的巨集處理指令前後都有兩個下劃線,例如:

__MACH__

定義用於通知或者字典的key的string型別的常量,你能確保編譯器能夠識別準確的值。(它執行拼寫檢查)Cocoa framework提供了很多範例:

APPKIT_EXTERN NSString *NSPrintCopies;

實際上常量是在.m 檔案裡面給賦值的。(注意APPKIT_EXTERN 巨集同object-C的extern 巨集一樣)

通知和異常

通知和異常的命名方式類似,但是他們都有自己的命名模式

通知

通知的命名規範如下:

[Name of associated class] + [Did | Will] + [UniquePartOfName] + Notification

例如:

NSApplicationDidBecomeActiveNotification
NSWindowDidMiniaturizeNotification
NSTextViewDidChangeSelectionNotification
NSColorPanelColorDidChangeNotification

異常的命名規範如下:

[Prefix] + [UniquePartOfName] + Exception

例如:

NSColorListIOException
NSColorListNotEditableException
NSDraggingException
NSFontUnavailableException
NSIllegalSelectorException

要注意 uniquePart 部分要使用駝峰命名法哦

備註:各個單詞示意

conventions 規範,約定

property 屬性

instance 例項

variable 變數

constants 常量

notification 通知

exception 異常

accessor 訪問器

omits  忽略

explicitly 明確

vary 不同

相關文章