苹果编码规范(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)

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

  • Objective-C软件编码规范

    根据苹果官方cocoa的文档总结的Objective-C软件编码规范。 1.目的...3 2.适用范围...3 3...

  • iOS客户端开发编码规范

    Objective-C 编码规范,内容来自苹果的文档翻译,自己的编码经验和对其它资料的总结。 一.命名规范 基本原...

  • 苹果编码规范(4)

    “写游记,说我泄露国家机密。写历史,就说我借古讽今。注解兵法,又说我策动谋反。写神怪故事吧,又说我导人迷信。最后改...

  • 苹果编码规范(1)

    WAR IS PEACE. ...

  • 苹果编码规范(2)

    那天是你用一块红布 ...

  • iOS代码规范新解

    命名规范 对于命名规范这里就不多少了,苹果给的有官方的文档《苹果Cocoa编码规范》。简单总结一下就是遵循清晰简洁...

  • 前端开发文档规范

    HTML 编码规范 请查看HTML编码规范 CSS 编码规范 请查看CSS编码规范 JavaScript 编码规范...

  • 3个经常被忽略的iOS编码规范

    对于编程开发来说,编码规范是不可或缺的一个环节。在iOS开发领域,苹果也有官方的编码规范文档:《Coding Gu...

  • iOS代码规范

    苹果官方代码规范文档:Cocoa 编码指南[https://developer.apple.com/library...

网友评论

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

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