Objective-C编码风格规范
2013-02-25 14:37
183 查看
基本规则
所有的花括号都放到下一行.
不使用TAB, 使用空格.
二元操作符之间需要有空格, 一元操作符之间没有空格.
类声明
示例代码:
@interface WBUser : NSObject
{
NSNumber *userID; // 用户UID.
NSString *screenName; // 微博昵称.
NSString *name; // 友好显示名称, 如Bill Gates, 名称中间的空格正常显示(此特性暂不支持).
NSString *desc; // 个人描述.
Gender gender; // 性别, m--男, f--女, n--未知.
int onlineStatus; // 在线状态.
NSString *remark; // 备注信息, 在查询用户关系时提供此字段.
}
WBUser : NSObject之间需要有空格.
NSNumber *userID;中NSNumber与*之间有空格,
*与userID之间没有空格, userID与;之间也没有空格.
注释为了保持美观, 应统一缩进到一个位置上.
属性
示例代码:
@property (nonatomic, retain) NSNumber *userID;
@property (nonatomic, retain) NSString *screenName;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *desc;
@property (nonatomic, assign) Gender gender;
@property (nonatomic, assign) int onlineStatus;
@property (nonatomic, retain) NSString *remark;
@synthesize userID;
@synthesize screenName;
@synthesize name;
@synthesize desc;
@synthesize gender;
@synthesize onlineStatus;
@synthesize remark;
@property (nonatomic, retain) NSNumber *userID;中@property与(之间有空格,
nonatomic,与retain之间有空格, )与NSNumber之间有空格.
@synthesize userID;中@synthesize与userID;之间有空格.
方法声明
示例代码:
+ (NSMutableArray *)objectsWithArray:(NSArray *)array;
+ (id)objectWithDictionary:(NSDictionary *)dict;
- (id)initWithDictionary:(NSDictionary *)dict;
- (BOOL)updateWithDictionary:(NSDictionary *)dict;
+或-与返回类型之间需要加空格.
返回类型或参数中的的类名与*之间需要加空格.
:与参数之间不加空格.
方法实现
示例代码:
+ (NSMutableArray *)objectsWithArray:(NSArray *)array
{
}
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)img
editingInfo:(NSDictionary *)editInfo
{
}
写法与方法声明相同.
括号需要在下一行.
当方法名超过限定的80字符时, 需要将每个参数分行, 每个参数一行, 以:对齐.
If语句
示例代码:
if ([genderString isEqualToString:@"m"])
{
self.gender = kGenderMale;
}
else if ([genderString isEqualToString:@"f"])
{
self.gender = kGenderFemale;
}
else if或else单独在一行.
if和else if后面接空格, 再写小括号里的条件.
循环语句
示例代码:
for (NSDictionary *dict in array)
{
}
for (int i = 0; i < 10; i++)
{
}
while (YES)
{
}
注意空格的位置.
switch语句
示例代码:
switch (self.responseDataType)
{
case kWeiboResponseDataTypeStatuses:
return [WBDataProcessor processStatuses:decodedObject];
break;
case kWeiboResponseDataTypeUser:
return [WBDataProcessor processUser:decodedObject];
break;
default:
break;
}
每个case需要缩进.
必须要写default:.
case中是否加花括号取决于是否有必要加, 如无必要可不加, 也可以加.
使用pragma mark分割代码
示例代码:
#pragma mark - Properties
- (BOOL)hasReplyComment
{
if (replyComment != nil)
{
return YES;
}
return NO;
}
#pragma mark - Equality Comparison
- (id)primaryKey
{
return commentID;
}
#pragma mark - Memory Management
- (void)dealloc
{
[super dealloc];
}
#pragma mark中使用英文, 每个单词首字母大写.
#pragma mark是用于分离一类方法, 如某个delegate的全部方法等.
释放变量时需置成nil
示例代码:
- (void)dealloc
{
[loginUsername release], loginUsername = nil;
[loginPassword release], loginPassword = nil
4000
;
[oauthTokenKey release], oauthTokenKey = nil;
[oauthTokenSecret release], oauthTokenSecret = nil;
[gsid release], gsid = nil;
[super dealloc];
}
在dealloc中须将变量release后设置为nil.
release与设置成nil在同一行, 并以逗号分隔.
不要忘记调用[super dealloc].
注释
在开发过程中注释是为自己能看明白.
开发结束后需要将一些与外部接口的方法, 类等进行Doxygen风格注释, 以便生成文档.
所有的花括号都放到下一行.
不使用TAB, 使用空格.
二元操作符之间需要有空格, 一元操作符之间没有空格.
类声明
示例代码:
@interface WBUser : NSObject
{
NSNumber *userID; // 用户UID.
NSString *screenName; // 微博昵称.
NSString *name; // 友好显示名称, 如Bill Gates, 名称中间的空格正常显示(此特性暂不支持).
NSString *desc; // 个人描述.
Gender gender; // 性别, m--男, f--女, n--未知.
int onlineStatus; // 在线状态.
NSString *remark; // 备注信息, 在查询用户关系时提供此字段.
}
WBUser : NSObject之间需要有空格.
NSNumber *userID;中NSNumber与*之间有空格,
*与userID之间没有空格, userID与;之间也没有空格.
注释为了保持美观, 应统一缩进到一个位置上.
属性
示例代码:
@property (nonatomic, retain) NSNumber *userID;
@property (nonatomic, retain) NSString *screenName;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *desc;
@property (nonatomic, assign) Gender gender;
@property (nonatomic, assign) int onlineStatus;
@property (nonatomic, retain) NSString *remark;
@synthesize userID;
@synthesize screenName;
@synthesize name;
@synthesize desc;
@synthesize gender;
@synthesize onlineStatus;
@synthesize remark;
@property (nonatomic, retain) NSNumber *userID;中@property与(之间有空格,
nonatomic,与retain之间有空格, )与NSNumber之间有空格.
@synthesize userID;中@synthesize与userID;之间有空格.
方法声明
示例代码:
+ (NSMutableArray *)objectsWithArray:(NSArray *)array;
+ (id)objectWithDictionary:(NSDictionary *)dict;
- (id)initWithDictionary:(NSDictionary *)dict;
- (BOOL)updateWithDictionary:(NSDictionary *)dict;
+或-与返回类型之间需要加空格.
返回类型或参数中的的类名与*之间需要加空格.
:与参数之间不加空格.
方法实现
示例代码:
+ (NSMutableArray *)objectsWithArray:(NSArray *)array
{
}
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)img
editingInfo:(NSDictionary *)editInfo
{
}
写法与方法声明相同.
括号需要在下一行.
当方法名超过限定的80字符时, 需要将每个参数分行, 每个参数一行, 以:对齐.
If语句
示例代码:
if ([genderString isEqualToString:@"m"])
{
self.gender = kGenderMale;
}
else if ([genderString isEqualToString:@"f"])
{
self.gender = kGenderFemale;
}
else if或else单独在一行.
if和else if后面接空格, 再写小括号里的条件.
循环语句
示例代码:
for (NSDictionary *dict in array)
{
}
for (int i = 0; i < 10; i++)
{
}
while (YES)
{
}
注意空格的位置.
switch语句
示例代码:
switch (self.responseDataType)
{
case kWeiboResponseDataTypeStatuses:
return [WBDataProcessor processStatuses:decodedObject];
break;
case kWeiboResponseDataTypeUser:
return [WBDataProcessor processUser:decodedObject];
break;
default:
break;
}
每个case需要缩进.
必须要写default:.
case中是否加花括号取决于是否有必要加, 如无必要可不加, 也可以加.
使用pragma mark分割代码
示例代码:
#pragma mark - Properties
- (BOOL)hasReplyComment
{
if (replyComment != nil)
{
return YES;
}
return NO;
}
#pragma mark - Equality Comparison
- (id)primaryKey
{
return commentID;
}
#pragma mark - Memory Management
- (void)dealloc
{
[super dealloc];
}
#pragma mark中使用英文, 每个单词首字母大写.
#pragma mark是用于分离一类方法, 如某个delegate的全部方法等.
释放变量时需置成nil
示例代码:
- (void)dealloc
{
[loginUsername release], loginUsername = nil;
[loginPassword release], loginPassword = nil
4000
;
[oauthTokenKey release], oauthTokenKey = nil;
[oauthTokenSecret release], oauthTokenSecret = nil;
[gsid release], gsid = nil;
[super dealloc];
}
在dealloc中须将变量release后设置为nil.
release与设置成nil在同一行, 并以逗号分隔.
不要忘记调用[super dealloc].
注释
在开发过程中注释是为自己能看明白.
开发结束后需要将一些与外部接口的方法, 类等进行Doxygen风格注释, 以便生成文档.
相关文章推荐
- JavaScript 风格指南/编码规范(Airbnb公司版)
- Objective-C开发编码规范
- Google的Objective-C编码规范
- Objective-C编码规范解析
- Objective-C编码规范:26个方面解决iOS开发问题
- [转]Google的Objective-C的编码规范
- [转载]Objective-C开发编码规范:4大方面解决开发中的规范性问题
- PHP团队 编码规范 & 代码样式风格规范
- 【小笔记】Objective-C编码规范
- Objective-C开发编码规范:4大方面解决开发中的规范性问题
- Objective-C 编码规范:禅与 Objective-C 编程艺术
- PHP团队 编码规范 & 代码样式风格规范
- Android开源项目-编码风格规范-Code Style Guidelines for Contributors
- Objective-C编码规范
- Google的Java编程风格指南(Java编码规范)
- Google的Java编程风格指南(Java编码规范)
- Android 编码规范及代码风格
- [译]Google的Java编程风格指南(Java编码规范)
- OC -- Objective-C语言编码规范
- Objective-C编码规范