iOS代码规范

命名规范

1.项目中所有的类都以项目简称做为前缀(例如LY)。
2.项目中所有宏定义都以 小写字母 k 开头。
3.Model的名称和字段的名称,尽量跟服务器统一。
4.方法名不能使用get或者set开头。
5.BOOL属性应加 is 前缀。 例如:

@property (nonatomic, assign) BOOL isShow;

6.类方法以类名开头。 例如:

NSString stringWithFormat:<#(nonnull NSString *), ...#>

7.类扩展的命名规范。 例如:

#import "NSMutableURLRequest+LYExtension.h"

类扩展的方法名最好以扩展名的前几个字母开头 + 下划线
- (NSMutableURLRequest *)ly_authorizedURLRequest {

}

8.图片的命名规则 模块功能具体名字 例如 crm_customer_status
9.枚举的命名规范,以类名开头。 例如:

typedef NS_ENUM(NSUInteger, LYNewJumpType) {
    LYNewJumpTypeNone = 0,
    LYNewJumpTypeSystemMessage,
    LYNewJumpTypeAnnouncemnt,
    LYNewJumpTypeDiscussion,
    LYNewJumpTypeBusinessCall
};

10.给一个对象命名时建议采用修饰+类型的方式,如果是数组则用单词复数表示。 例如:

UILabel *nameLabel; //name + label
NSMutableArray *scores;

书写规范

1.方法名的书写规范 - + 空格 + 返回值 + 方法名 + 空格 + {}。 例如:

- (void)loadSubViews {

}

2.带参数的方法名书写规范 后面的参数名都是小写 并且子参数名跟方法名一样(age:(NSInteger)age 例如:

- (void)initWithName:(NSString *)name age:(NSInteger)age {

}

3.对象的类型和基础类型的书写规范 例如:

NSString *name = @"小明";
NSInteger age = 12;
BOOL isShow = YES;

4.判断的书写规范,关键字 + 空格 + 判断条件 + 空格 + {} 例如:

if (YES) {

}
else if (YES) {

}
else {

}

5.属性的书写规范,关键字 + 空格 + 修饰符 + 空格 + 类型 + 空格 + 属性名。 例如:

@property (nonatomic, strong) NSMutableDictionary *clue;

6.写代码时,逗号后面都用空格隔开。而 : 的前后都要用空格隔开。 例如:



[NSString stringWithFormat:@"【%@】%@-%@", startAt, self.flowEventModel.orderTitle, self.flowEventModel.flowTitle];

NSDictionary *params = @{
                         @"uuid" : uuid ?: @"",
                         @"name" : objKey,
                        };

7.严格遵守项目中 100 的换行线。
8.不可变数组和字典的书写方法,每个元素都换行。 例如:

NSDictionary *params = @{
                         @"uuid" : uuid ?: @"",
                         @"name" : objKey,
                         @"mime" : mimeType,
                         @"size" : @(data.length),
                         @"bizType" : @(bizType)
                        };

NSArray *statuses2 = @[
                       @"全部状态",
                       @"待分派",
                       @"进行中",
                       @"待确认完成",
                       @"已完成",
                       @"意外终止"
                      ];

9.运算符的书写规范,运算符和元素之间用空格隔开。例如:

a + b = c;
a ++;
a / b = c;
a % b = c;

10.关于判断的书写规范 例如:

BOOL isShow = NO;
if (isShow) {

}
不推荐用下面几种写法:
if (isShow == YES) {

}

if (isShow == nil) {

}

11.对象的比较不推荐使用 == ,应使用系统提供的方法进行比较。 例如:

[a isEqualToString:c];
不推荐直接使用 a == c 进行判断

12.三元运算符的使用如下:

a ?: @""
a ? b : @""

13.在知道数组元素类型情况下,请标明数组中元素的类型。

NSMutableArray  *arr;

14.复杂的判断条件,尽量每一个条件写一行。例如:

if (job.JobState == JobState.New
    || job.JobState == JobState.Submitted
    || job.JobState == JobState.Expired
    || (job.JobTitle && job.JobTitle.length)) {

}

代码规范

1.项目中发现没有用的代码或者文件,请直接删除。
2.多用#pragma mark - xxx把方法分组,#pragma mark与下面的代码之前不要空行。
3.项目中出现警告,尽量消除警告。
4.项目中多使用枚举,不要使用常量。
5.在类扩展里面,不要重新类的方法。这样会带来意想不到的错误。
6.单个的方法最好不要超过100行,如果超过请对方法内容进行拆分。
7.每一个类的实现文件最好不要超过800行,超过了,可考虑对该文件进行重构。
8.如果一个常量只有在这个类中使用到,可用static修饰。例如:

static const NSTimeInterval kAnimationDuration = 0.3;

9.在.h文件,减少暴露在外的方法或者属性。
10.属性修饰符 字符串必须用copy。
11.对象的初始化方法。尽量使用懒加载。(建议把懒加载的方法写在最后,这样我们可以直接把重点放在业务逻辑上)。
12.项目中尽量少的使用tag。
13.如果项目中的工具类,不能满足你的需求,请使用的继承的方式解决。尽量不要随意修改公共类。
14.使用block的时候,请检查是否循环引用的问题。
15.每个类里面的dealloc方法,写在最上面。这样便于检查该类是否正常释放。
16.尽量把重复的代码,封装成一个方法。如果要修改这个方法的时候只需要修改一个地方即可。
17.书写代理方法的时候,代理的方法名要表明这个代理方法是做了什么事情。例如:- (void)tableView:didSelectRowAtIndexPath:
18.不要使用new方法来初始化对象。
19.公共类的接口要设计的简洁,满足核心的功能就好了。不要设计很少会被用到,但是参数极其复杂的 API 。如果要定义复杂的方法,使用类别或者类扩展。
20.尽量不要在.h文件那么导入其他的头文件。
21.点语法常用来访问属性,不要用点语法来调方法。
22.使用window的时候,通过下面的方式获取:

正确的写法:
[UIApplication sharedApplication].keyWindow.rootViewController
错误的写法:
self.window.rootViewController  因为程序可能不止一个window,self.window可能不是主窗口

23.建议加载xib,xib名称用NSStringFromClass(),避免书写错误。

// 推荐写法
 [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([DXRecommendTagVCell class]) bundle:nil] forCellReuseIdentifier:ID];
// 不推荐写法
 [self.tableView registerNib:[UINib nibWithNibName:@"DXRecommendTagVCell" bundle:nil] forCellReuseIdentifier:ID];

注意事项:

1.统一使用驼峰命名。
2.方法名的可读性高,避免命名冲突。
3.逻辑比较复杂的代码,一定要写注释。
4.封装的控件一定要写清楚注释。最好能有一个使用说明或者是使用案例。
5.公共的控件最好遵循单一职责原则。
6.项目中如果出现修改公共控件,先考虑会影响的范围。然后在跟相关人员协商后修改。
7.完成一个迭代版本的需求后,抽出时间来检查新增的类是否存在内存泄漏。
8.完成一个迭代版本的需求后,及时的整理本次迭代的文件(删除不要的文件,把新增的文件归类)

你可能感兴趣的:(iOS代码规范)