一、感谢互联网,感谢各位前辈,谢谢你们的分享。
参考链接:http://www.jianshu.com/p/8b76814b3663
二、部分重要规范
1.命名(首字母不同,剩下的都采用驼峰命名法):
(1)项目名首字母大写;
(2)文件名首字母小写;
(3)类名首字母大写;
(4)属性名首字母小写;
(5)方法名首字母小写;
(6)类中的局部变量等一律小写开头;
(7)宏定义全为大写字母以便区分;
(8)有返回值的方法命名时以返回值的名称开头;
(9)图片或者视频等资源文件一律采用功能模块加下划线加具体位置或者子功能模块名称的方法;
(10)常量使用——static 类型名 const 常量名 = 初始化的值——来进行命名,不要使用宏定义的方法;
2.对齐:
(1)函数名根据冒号进行对齐,如果函数名的第一部分很短则根据第一部分首字母进行对齐;
(2)调用函数时也要根据冒号进行对齐,如果函数名的第一部分很短则根据第一部分首字母进行对齐;
(3)其余部分根据xcode提供的对齐方式即可;
(4)多次调用函数时,每个函数占一行,同时根据每个函数的首字母进行对齐,如果都有参数,则根据参数的冒号进行对齐;
3.空格:
(1)所有符号两侧需要一个空格,系统默认不需要的除外;
(2)#import每个文件之间需要空一行,不是回车是空一行;
4.注释部分:
(1)API注释:
/****************************************
函数名称:- (NSInteger)showPriceWithId:(NSString *)goodsId;
函数描述:获得商品的价格
输入参数:如果有写上名字,并进行意义描述,并且每个参数独占一行
输出参数:如block,同输入参数
返回值:类型名称加上描述
****************************************/
如果某项没有内容,使用N/A来表示;
(2)私有函数注释:使用/** 这里进行意义标注*/
(3)使用#pragma Mark - 标注一类函数,便于查找
(4)函数内注释,使用//来进行标示,并且要在需要标示的代码之前进行标示,需要跟标注的代码进行对齐;
5.点语法相关
(1)所有属性调用一律使用点语法,当前对象的属性的属性也使用点语法;
6.特殊部分:
(1)需要判断的全局变量使用枚举来声明:
- typedef NS_ENUM(NSInteger, RWTLeftMenuTopItemType) {
- RWTLeftMenuTopItemMain,
- RWTLeftMenuTopItemShows,
- RWTLeftMenuTopItemSchedule
- };
(2)case和if等语句要加上大括号,同时当switch的判断条件是一个枚举类型时,不需要default;
(3)如果使用BOOL类型最好不要使用 == nil 或者== NULL 直接使用!来表示;
(4)使用三目运算符时,层次要分明,不允许连环的等于三目运算符的表达式;
(5)init的返回值类型不是id,而是instancetype,这样可以方便编译器判断返回的对象的类型,正确写法:
- - (instancetype)init {
- self = [super init];
- if (self) {
- // ...
- }
- return self;
- }
(6)view的frame应该使用系统提供的方法来访问,不应该使用点语法访问:
- CGRect frame = self.view.frame;
- CGFloat x = CGRectGetMinX(frame);
- CGFloat y = CGRectGetMinY(frame);
- CGFloat width = CGRectGetWidth(frame);
- CGFloat height = CGRectGetHeight(frame);
- CGRect frame = CGRectMake(0.0, 0.0, width, height);
(8)判断error的问题:
- NSError *error;
- if (![self trySomethingWithError:&error]) {
- // Handle Error
- }
首先判断的是error是否存在;
(9)单利模式的建立:
- + (instancetype)sharedInstance {
- static id sharedInstance = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedInstance = [[self alloc] init];
- });
- return sharedInstance;
- }