命名原则
一般性原则:
- 可读性高(简洁且清晰)和防止命名冲突(通过加前缀后缀来保证)。
- Objective-C 的命名通常都比较长, 名称遵循驼峰式命名法. 一个好的命名标准很简单, 就是做到在开发者一看到名字时, 就能够懂得它的含义和使用方法. 另外, 每个模块都要加上自己的前缀, 前缀在编程接口中非常重要, 可以区分软件的功能范畴并防止不同文件或者类之间命名发生冲突, 比如 DKTableView、DKDataBase | 代码 | 是否正确规范 | | —- | —- | | insertObject:atIndex: | 正确 | | insert:at: | 不清晰,没有说明插入什么,插到哪里 | | removeObjectAtIndex: | 正确 | | removeObject: | 正确,因为⽅法是⽤来移除作为参数的对象 | | remove: | 不清晰,没有说明要移除什么 |
一致性:
尽可能与 Cocoa 编程接⼝命名保持一致。如果不太确定某个命名的⼀致性,请浏览头文件或参考文档中的范例,在使⽤多态方法的类中,命名的⼀致性⾮常重要。在不同类中实现相同功能的⽅法应该具有同的名称。
| 代码 | 点评 |
|---|---|
| – (NSInteger)tag | 在 NSView, NSCell, NSControl 中有定义 |
| – (void)setStringValue:(NSString *) | 在许多 Cocoa classes 中都有定义 |
文件命名
文件的扩展名应该如下:
| 文件名规范 | 文件类型 |
|---|---|
| .h | C / C++ / Objective-C 头文件 |
| .m | Objective-C 实现文件 |
| .mm | Objective-C / C++ 实现文件 |
| .cc | 纯 C++ 实现文件 |
| .c | 纯 C 实现文件 |
分类的文件名应该包含被扩展的类名,如:NSString+DKUtils.h 或 NSTextView+DKAutocomplete.h。
编码命名
类的命名
- 类名(以及类别、协议名)应首字母大写,并以驼峰格式分割单词。
- 所有类名、枚举、结构、protocol 定义时最好加一个统一的标示符,可以是项目缩写,或者个人项目的名称缩写,目前规定都加上大写的 DK 作为根前缀。
根据功能模块可以给功能模块的类添加功能模块的名称前缀,如用户中心的控制器,属于 Profile 模块,可以命名为 DKProfileViewController。
声明定义
所有 protocol 定义时,都加上后缀 Delegate。
比如 DKRefreshViewDelegate,表示 RefreshView 的协议- 所有的通知名都加上 Notification,通知名格式为:
[ 触发通知的类名 ] + [Did/Will] + [ 动作 ] + Notification
例如:
NSWindowDidMiniaturizeNotificationNSTextViewDidChangeSelectionNotificationNSColorPanelColorDidChangeNotification
方法命名
- 小驼峰原则
方法名应遵守小驼峰原则首字母小写,其他单词首字母大写,每个空格分割的名称以动词开头。执行性的方法应该以动词开头,小写字母开头,返回性的方法应该以返回的内容开头,但之前不要加 get。 ```objectivec (void)insertModel:(id)model atIndex:(NSUInteger)atIndex;
(instancetype)arrayWithArray:(NSArray *)array; ```
代理方法
以发送代理的对象类名作为代理方法名的开始(去掉类名的前缀,并且小写开头) ```objectivec(BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(int)row;
(BOOL)application:(NSApplication )sender openFile:(NSString )filename;
<a name="GbKtX"></a>### 枚举命名```objectivectypedef NS_ENUM(NSInteger, DKGlobalConstants) {DKPinSizeMin = 1,DKPinSizeMax = 5,DKPinCountMin = 100,DKPinCountMax = 500,};
不使用下面这种方式
enum GlobalConstants {kMaxPinSize = 5,kMaxPinCount = 500,};
宏命名
以大写 K 开头,后面单词首字母大写,其余小写。如:#define KMaxHeigt 100.0
属性变量命名
变量名使用小驼峰法, 使变量名尽量可以推测其用途属性具有描述性。别一心想着少打几个字母,让你的代码可以迅速被理解更加重要。
每个属性命名都加上类型后缀,如按钮就加上 btn 后缀,imageView 就加上 imgView。
如果是布尔值的成员变量,要定义 getter 方法 为 isXXX@property (nonatomic, assign, getter=isEditable) BOOL editable;
| 标题 | 说明 | | —- | —- | | 类成员变量名 | 成员变量用小驼峰法命名并前缀下划线 | | 局部变量名 | 遵守小驼峰命名规则 | | const 常量 | 以小写 k 开头,后面单词首字母大写 |
