iOS 代码架构规范
iOS 命名方法
代码命名基础
面向对象软件库设计中经常被忽视的一个方面是类,方法,函数,常量和程序接口的其他元素的命名
一般原则
- 清晰
- 尽可能保持清晰和简洁是件好事,但由于简洁,清晰度不应受到影响:
代码 |
评论 |
insertObject:atIndex: |
好 |
insert:at: |
不清楚; 什么是插入?“at”表示什么? |
- 一致性
- 尝试在整个Cocoa编程接口中使用一致的名称。如果您不确定,请浏览当前头文件或参考文档以获取先例。
- 当你有一个方法应该利用多态性的类时,一致性尤为重要。在不同类中执行相同操作的方法应具有相同的名称。
代码 |
评论 |
- (NSInteger)tag |
定义中NSView,NSCell,NSControl。 |
- (void)setStringValue:(NSString *) |
定义在许多Cocoa类中。 |
前缀
前缀是编程接口中名称的重要部分。它们区分了软件的功能区域。通常,这个软件在一个框架中打包或者(在基础和应用程序工具包的情况下)在密切相关的框架中打包。前缀可防止第三方开发人员定义的符号与Apple定义的符号(以及Apple自己的框架中的符号之间)发生冲突。
- 前缀具有规定的格式。它由两个或三个大写字母组成,不使用下划线或“子前缀”。以下是一些示例:
字首 |
Cocoa框架 |
- NS |
基础、应用套件 |
- AB |
地址簿 |
- IB |
Interface Builder |
- 在命名类,协议,函数,常量和
typedef
结构时使用前缀。千万不能命名方法时,使用前缀; 方法存在于由定义它们的类创建的名称空间中。另外,不要使用前缀来命名结构的字段。
印刷约定
在命名API元素时遵循一些简单的印刷约定:
- 对于由多个单词组成的名称,不要使用标点符号作为名称的一部分或作为分隔符(下划线,短划线等); 相反,大写每个单词的第一个字母并将单词一起运行(例如runTheWordsTogether) - 这就是所谓的驼峰套管。但请注意以下条件:
- 对于方法名称,以小写字母开头并大写嵌入单词的第一个字母。不要使用前缀。
fileExistsAtPath:isDirectory:
- 对于函数和常量的名称,请使用与相关类相同的前缀,并将嵌入字的第一个字母大写。
NSRunAlertPanel
NSCellDisabled
- 避免使用下划线字符作为前缀,意味着方法名称中的私有(允许使用下划线字符作为实例变量名称的前缀)
类和协议名称
- 类的名称应该包含一个名词,该名词可以清楚地表明类(或类的对象)代表什么或做什么。基础和应用程序框架充满了例子; 少数是NSString,NSDate,NSScanner,NSApplication,UIApplication,NSButton,和UIButton。
- 协议应根据它们对行为进行分组的方式命名:
- 大多数协议将与特定类别无关的相关方法分组。应该命名这种类型的协议,以便协议不会与类混淆。一个常见的惯例是使用动名词(“... ing”)形式:
代码 |
评论 |
NSLocking |
好 |
NSLock |
不清晰 |
头文件
如何命名头文件很重要,因为您使用的约定指示文件包含的内容:
- 声明一个孤立的类或协议。如果类或协议不是组的一部分,请将其声明放在一个单独的文件中,该文件的名称是声明的类或协议的名称。
头文件 |
声明 |
NSLocale.h |
该NSLocale类 |
- 声明相关的类和协议。对于一组相关的声明(类,类别和协议),将声明放在带有主类,类别或协议名称的文件中。
头文件 |
声明 |
NSString.h |
NSString和NSMutableString类。 |
NSLock.h |
NSLocking协议和NSLock,NSConditionLock和NSRecursiveLock类。 |
- 包括框架头文件。每个框架都应该有一个以框架命名的头文件,它包含框架的所有公共头文件。
头文件 |
框架 |
Foundation.h |
Foundation.framework。 |
- 将API添加到另一个框架中的类。如果在一个框架中声明方法在另一个框架中的类的类别中,则将“Additions”附加到原始类的名称;
一个例子是NSBundleAdditions.hApplication Kit 的头文件。
- 相关功能和数据类型。如果您有一组相关的函数,常量,结构和其他数据类型,请将它们放在适当命名的头文件中,例如NSGraphics.h(Application Kit)。
网友评论