苹果编码规范(3)

作者: C93zzo | 来源:发表于2016-06-17 11:49 被阅读107次

                                                                        --:我们是要偷那条船吗?

                                                                        --:征用,是征用。航海术语,懂吗?

                                                                                            ----------《加勒比海盗》

    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

    相关文章

      网友评论

        本文标题:苹果编码规范(3)

        本文链接:https://www.haomeiwen.com/subject/unhvdttx.html