Objective-C编码规范[不定期更新细节]
2013-11-06 10:42
369 查看
驼峰命名法规则
骆驼式 | 当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时 |
小驼峰法命名规则 | 除第一个的单词之外的单词之外,其他首字母大写 |
大驼峰法命名规则 | 相比小驼峰法,第一个单词的首字母也变成大写 |
![](http://10.6.8.206:81/images/edit.png?1379141326)
类名、变量名
类名:遵循大驼峰法成员变量名:采用下划线打头并遵循小驼峰法
如:
@interface MyAirPlane : SKSpriteNode { int _blood; //血量 } @end
非成员变量名:直接采用小驼峰法
如:
SKSpriteNode * monster=[SKSpriteNode spriteNodeWithImageNamed:@"Monster"];
![](http://10.6.8.206:81/images/edit.png?1379141326)
行宽
为了方便阅读,在此建议每行列宽不超过80列XCODE分割线设置方法:Xcode>Preferences>Text Editing>Show page guide 勾上
![](http://10.6.8.206:81/images/edit.png?1379141326)
方法声明与定义
为了见名知意。在此,方法名、参数名不推荐用字母缩写-(void)projctile:(SKSpriteNode *)projcttitle didCollideWithMonster:(SKSpriteNode*)monster
![](http://10.6.8.206:81/images/edit.png?1379141326)
方法调用
方法名不长:建议所有参数写在同一行中如:
[myObject doFooWith:arg1 name:arg2 error:arg3];
方法名较长:建议一行一参数,并以冒号对齐的方式
如:
[self performSelector:@selector(RemoveForSuperSKNode:) withObject:myLabel afterDelay:2];
![](http://10.6.8.206:81/images/edit.png?1379141326)
类的声明与实现
Objective-C中类的声明分成两部分,声明以及实现通常,类的声明放在.h中,实现放在.m中
![](http://10.6.8.206:81/images/edit.png?1379141326)
(1)声明
成员变量: | 采用下划线打头,能避免与局部变量声明的混淆 |
属性声明: | 第一个属性声明与花括号间隔一行 |
方法声明: | 方法名上方写注释,且注释与上面的属性或花括号间隔一行,并与@end间隔一行 |
@interface MyAirPlane : SKSpriteNode { int _boold; } @property(assign,nonatomic)int blood; //血量 @property(assign,nonatomic)float speed; //速度 @property(retain,nonatomic)NSString* name; //名 //创建一个... +(SKSpriteNode*)create; @end
![](http://10.6.8.206:81/images/edit.png?1379141326)
(2)实现
一个类的实现其实也跟声明差不多,方法体与方法体之间保持至少一行间隔,且第一个方法提和最后一个方法体跟@implementation和@end保持一行间隔举例:
@implementation MyAirPlane +(SKSpriteNode*)create { SKSpriteNode* node=[SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"]; [node setXScale:0.1]; [node setYScale:0.1]; return node; } @end
![](http://10.6.8.206:81/images/edit.png?1379141326)
避免使用 new创建对象
为了使内存分配的代码更好审查,不建议调用NSObject类的类方法new。也不要在子类重写。相反,你应该使用alloc和init方法来 创建并初始化一个对象。![](http://10.6.8.206:81/images/edit.png?1379141326)
@public与@private
@public与@private访问标识符缩进一个空格,且独立一行存在@interface MyAirPlane : SKSpriteNode { @public ... @private ... } @end
![](http://10.6.8.206:81/images/edit.png?1379141326)
#import
禁止 使用以下的方式导入#import <Foundation/NSArray.h> #import <Foundation/NSString.h>
推荐 使用以下的方式导入
#import <Foundation/Foundation.h>
![](http://10.6.8.206:81/images/edit.png?1379141326)
MRC中的Dealloc处理变量
对象的释放应尽量跟@interface中的变量声明顺序保持一致,这样有助于代码审查,保证每个retained对象得以释放![](http://10.6.8.206:81/images/edit.png?1379141326)
if else以及BOOL的使用方法
![](http://10.6.8.206:81/images/edit.png?1379141326)
if else
建议使用:if (contact.bodyA.categoryBitMask<contact.bodyB.categoryBitMask) { firstBody=contact.bodyA; secondBody=contact.bodyB; } else { firstBody=contact.bodyB; secondBody=contact.bodyA; }
不建议使用
if (contact.bodyA.categoryBitMask<contact.bodyB.categoryBitMask) { firstBody=contact.bodyA; secondBody=contact.bodyB; }else { firstBody=contact.bodyB; secondBody=contact.bodyA; }
![](http://10.6.8.206:81/images/edit.png?1379141326)
BOOL
建议使用if (!someObject) { } if (isAwesome) if (![someObject boolValue])
不建议使用
if (someObject == nil) { } if ([someObject boolValue] == NO) if (isAwesome == YES) // 永远不要这样做。
参照
Google OC编码规范
纽约时报OC编码规范
相关文章推荐
- Objective-C开发编码规范
- objective-c 编码规范(coding style)
- [转载]Objective-C开发编码规范:4大方面解决开发中的规范性问题
- Objective-C编码规范:26个方面解决iOS开发问题
- 谷歌Objective-C编码规范
- Google的Objective-C编码规范
- Objective-C开发编码规范
- Objective-C编码规范:26个方面解决iOS开发问题
- C语言的细节(不定期更新)
- Swift 4.0 编码规范,持续更新中...
- Objective-C编码规范:26个方面解决iOS开发问题
- linux一些细节,不定期更新
- 一些Objective-C的编码规范
- Objective-C开发编码规范:4大方面解决开发中的规范性问题
- Objective-C编码规范:26个方面解决iOS开发问题
- Objective-C编码规范(待补充)
- Objective-C编码规范
- Objective-C编码规范
- Android面试、开发之高手 编码规范与细节
- 邮件编码问题汇总(不定期更新)