一、命名规范
1.类:
(1)首字母大写,后续单词首字母大写。
(2)类名末尾要包含此类的类型,比如RootView,RootViewController。
2.属性
(1)属性名称首字母小写,后续首字母大写;
(2)使用@property,要保持必要的空格,如:@property (nonatomic, strong);
(3)如果在@implementation内声明全局变量,则使用下划线前缀,局部变量不需要使用下划线前缀;
(4)禁止使用a、b、c这样的变量命名,要见词达意;
(5)属性命名时,要将属性类型编写到属性名中,使读者看到变量名即可知道这是个什么类型的变量,比如:usersDict,usersArray等。
3.方法:
(1)-或者+后加一空格;
(2)方法名首字母小写,后续单词首字母大写;
(3)参数名首字母小写,后续单词首字母大写;
(4)参数类型如果带有*号,则参数类型和*号之间加一空格;
(5)如果方法太长、参数过多,可以换行冒号对齐,方法调用也一样;
(6)非重写系统方法时,不要使用is、set和get前缀;
(7)可以使用 can,should,will等词来协助表达存取方法的意思,但不要使用do和does;
(8)不可以省略关键词;
(9)尽量让方法的命名读起来像一句完整的话,能够传达出方法的意思;
4.宏定义:
宏定义以k开头,第二个字母大写,后续单词首字母大写。
5.公共:
(1)单词尽量通俗易懂,避免引起歧义,具体表述要和实际功能保持一致;
(2)除了广为人知含义的缩写,比如info、msg、UI、HTTP这类以外,尽量不要使用单词缩写,要写全拼,不要担心方法太长,清晰最重要。
二、每一行的最大长度
在 Xcode > Preferences > Text Editing > Page guide at column:中将最大行长设置为100,过长的一行代码将会导致可读性问题。
三、缩进和大括号
1.统一使用四个空格作为缩进。如果以Tab来进行缩进控制,请在Xcode中设置Tab缩进为4个空格。
2.所有大括号另起一行。
3.在if判断或者for循环中,就算仅有一行逻辑代码,也不能省略大括号的使用。
四、注释
1.注释很重要,过多过少都不合适,不能没有,也不能喧宾夺主。
2.变量、方法名前要加注释加空行,不要使用后置注释的方式。
3.方法内部,按照逻辑步骤分块,每块添加注释;
4.除了方法内部第一条注释以外,注释上部保留一空行,避免代码和注释混为一片。
5.头文件使用标准的多行注释格式,实现文件中仅使用双斜杠注释即可。
6.注意注释是为了让别人看懂,而不是仅仅你自己。
五、使用统一前缀
1.一个项目内根据实际意义定义前缀;
2.项目内所有源文件、资源文件(包含图片)统一使用前缀,避免项目间冲突;
3.源文件内部的宏定义同样需要使用统一前缀,如下;k +前缀 + 实际意义;
六、类头文件编写规范
1.宗旨:头文件是写给使用者看的,在满足使用者需求的前提下,头文件元素越少越好,将没有必要让使用者看到的元素放到实现文件中,这样处理,能够减少使用者的学习成本,而且减少使用错误率。
2.头文件内容添加顺序:
(1)版权注释
(2)头文件导入
(3)宏定义
(4)枚举定义
(5)协议定义
(6)类定义开始
(7)类所属变量定义
(8)类所属方法定义
(9)类定义结束
3.各个内容区之间都以一空行分割。避免代码一大片混在一起。
4.如果方法太多,可以使用#pragma mark对代码分区分块,方便阅读代码。
七、类实现文件编写规范
1.实现文件内容添加顺序
(1)版权注释
(2)头文件导入
(3)宏定义
(4)静态变量定义
(5)枚举定义
(6)类扩展定义开始
(7)类扩展的变量
(8)类扩展的方法
(9)类扩展结束
(10)类实现开始
(11)类实现方法
(12)类实现结束
2.各个内容区之间都以一空行分割。避免代码一大片混在一起。
3.类全局变量声明方式:以@property方式添加到类扩展定义中,不在@implementation中定义全局变量的方式。这样处理可以统一使用self点操作,对于全局变量的辨认度有大幅提高,
4.对于方法的封装,有几点规范:
(1)方法的单一职责:单个方法的职责尽量单一,尽量抽离公共逻辑,方法尽量复用。
(2)方法实现行数:一个方法的最大行数100行,如果一个方法的实现超过一百行,则说明需要进行逻辑拆分了。
(3)方法和方法之间要有一空行分割。
5.要使用#pragma mark将各个方法按照逻辑功能分区,公共方法单独分区。方便阅读和掌握代码结构。
八、#pragma mark格式
使用"#pragma mark - 内容"方式,此行上下都要留空行。
九、Block编写规范
1.除非必要,不要使用weakSelf。百分之九十九的情况不需要使用weakSelf,我们要自己维护好block的引用关系,让block适时释放。
2.跟之前大括号的规范一样,block中的大括号也要另起一行,^保留在原行末尾。
3.如果 block过于庞大,应该单独声明成一个变量来使用。