Objective-C编码规范[不定期更新细节]

驼峰命名法规则

骆驼式当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时
小驼峰法命名规则除第一个的单词之外的单词之外,其他首字母大写
大驼峰法命名规则相比小驼峰法,第一个单词的首字母也变成大写

Edit

类名、变量名

类名:遵循大驼峰法

成员变量名:采用下划线打头并遵循小驼峰法
如:

@interface MyAirPlane : SKSpriteNode
{
    int _blood;   //血量
}

@end

非成员变量名 :直接采用小驼峰法
如:
    SKSpriteNode * monster=[SKSpriteNode spriteNodeWithImageNamed:@"Monster"];


Edit

行宽

为了方便阅读,在此建议每行列宽不超过80列
XCODE分割线设置方法:Xcode>Preferences>Text Editing>Show page guide 勾上


Edit

方法声明与定义

为了见名知意。在此,方法名、参数名不推荐用字母缩写

  -(void)projctile:(SKSpriteNode *)projcttitle  didCollideWithMonster:(SKSpriteNode*)monster


Edit

方法调用

方法名不长:建议所有参数写在同一行中
如:

  [myObject doFooWith:arg1 name:arg2 error:arg3];

方法名较长:建议一行一参数,并以冒号对齐的方式
如:

        [self performSelector:@selector(RemoveForSuperSKNode:)
                   withObject:myLabel
                   afterDelay:2];


Edit

类的声明与实现

Objective-C中类的声明分成两部分,声明以及实现

通常,类的声明放在.h中,实现放在.m中


Edit

(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

Edit

(2)实现

一个类的实现其实也跟声明差不多,方法体与方法体之间保持至少一行间隔,且第一个方法提和最后一个方法体跟@implementation和@end保持一行间隔

举例:

@implementation MyAirPlane

+(SKSpriteNode*)create
{
    SKSpriteNode* node=[SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
    [node setXScale:0.1];
    [node setYScale:0.1];

    return node;
}

@end

Edit

避免使用 new创建对象

为了使内存分配的代码更好审查,不建议调用NSObject类的类方法new。也不要在子类重写。相反,你应该使用alloc和init方法来 创建并初始化一个对象。


Edit

@public与@private

@public与@private访问标识符缩进一个空格,且独立一行存在

@interface MyAirPlane : SKSpriteNode
{
 @public
    ...
 @private
    ...
}

@end

Edit

#import

禁止 使用以下的方式导入

#import <Foundation/NSArray.h>
#import <Foundation/NSString.h>

推荐 使用以下的方式导入

#import <Foundation/Foundation.h>

Edit

MRC中的Dealloc处理变量

对象的释放应尽量跟@interface中的变量声明顺序保持一致,这样有助于代码审查,保证每个retained对象得以释放


Edit

if else以及BOOL的使用方法

Edit

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;
    }

Edit

BOOL

建议使用

if (!someObject) {
}
if (isAwesome)
if (![someObject boolValue])

不建议使用

if (someObject == nil) {
}
if ([someObject boolValue] == NO)
if (isAwesome == YES) // 永远不要这样做。

参照
Google OC编码规范
纽约时报OC编码规范
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值