--:我们是要偷那条船吗?
--:征用,是征用。航海术语,懂吗?
----------《加勒比海盗》
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingFunctions.html#//apple_ref/doc/uid/20001283-BAJGGCAD
函数命名
1函数命名的格式与方法命名的格式一样,但是有两点例外:
函数以类和常量相同的前缀开始。
前缀之后的单词的第一个字母大写。
2多数函数以一个描述该函数行为的动词开头:
NSHighlightRect
NSDeallocateObject
3如果函数返回它第一个参数,则忽略动词
unsigned int NSEventMaskFromType(NSEventType type)
float NSHeight(NSRect aRect)
4如果值是以传址的方式返回,使用“get”
const char *NSGetSizeAndAlignment(const char *typePtr, unsigned int *sizep, unsigned int *alignp)
5如果返回值是布尔值,则函数以相应的动词的变化形式返回。
BOOL NSDecimalIsNotANumber(const NSDecimal *decimal)
属性和数据类型命名
属性和实例变量
属性的命名与获取方法的命名大致相同。如果属性是动词或名词,格式如下:@property (…)类型 动词或名词;
@property (strong) NSString *title;
@property (assign) BOOL showsAlpha;
如果属性是形容词,则属性名忽略“is”前缀,而get方法使用“is”前缀
@property (assign, getter=isEditable) BOOL editable;
确保实例变量的名字能简洁明了地描述它保存的属性(attribute)。通常,你应该直接获取实例变量,而应该通过获取方法来获取。为了标记这一点,使用下划线作为实例变量的前缀。如:
@implementation MyClass {
BOOL _showsTitle;
}
避免显式地声明public的实例变量
如果你需要声明一个实例变量,使用@privateor或protected。
如果该类的实例能够获取该实例变量,确保你为该实例变量写了获取方法。
常量
枚举型常量
为那些具有integer值的相关常量使用枚举型常量。
枚举常量的命名规则与函数的命名规则相同
typedef enum _NSMatrixMode {
NSRadioModeMatrix = 0,
NSHighlightModeMatrix = 1,
NSListModeMatrix = 2,
NSTrackModeMatrix = 3
} NSMatrixMode;
可以给bit masks这样的值创建未命名的枚举常量:
enum {
NSBorderlessWindowMask = 0,
NSTitledWindowMask = 1 << 0,
NSClosableWindowMask = 1 << 1,
NSMiniaturizableWindowMask = 1 << 2,
NSResizableWindowMask = 1 << 3
};
用const创建的常量
用const创建浮点常量。如果一个integer的常量与其他常量没有关联,可以使用const来创建,否则使用枚举。
用const来创建常量的格式如下:
const float NSLightGray;
和枚举常量一样,用const创建的常量的命名规则同方法命名。
其他类型的常量
通常来说,不要用#define来声明常量。对于integer类型,使用枚举,浮点型,用const。
使用大写字母来定义符号,预处理器由此来判断一个代码块是否被执行。比如:
#ifdef DEBUG
编译器定义的宏前后都有两个下划线。如:
__MACH__
为通知和字典的key定义字符串常量。通过使用字符串常量,你可以确保编译器进行拼写检查。Cocoaframeworks提供了大量的示例,如:
APPKIT_EXTERN NSString *NSPrintCopies;
通知和异常
通知和异常的命名规则相似,但又各有不同。
通知
如果一个类有一个代理,它的大多数通知都会被它的代理通过已定义的方法接收。这些通知的名字应该反应相对应的代理方法。比如,全局NSApplication的代理自动的接收applicationDidBecomeActive:消息,不管应用什么时候抛出NSApplicationDidBecomeActiveNotification 通知。
通知的名字格式如下:
[相关类名] + [Did | Will] + [名字的特有部分] + Notification
比如:
NSApplicationDidBecomeActiveNotification
NSWindowDidMiniaturizeNotification
NSTextViewDidChangeSelectionNotification
NSColorPanelColorDidChangeNotification
异常
异常的名字格式如下:
[前缀] + [名字的特有部分] + Exception
比如:
NSColorListIOException
NSColorListNotEditableException
NSDraggingException
NSFontUnavailableException
NSIllegalSelectorException
网友评论