iOS 编程规范
- 通用规范
类、协议、枚举、结构体
- 类、协议、枚举、结构体的命名首字母大写;
- 类、协议、枚举、结构体采用驼峰命名;
- 变量名
- 变量名采用驼峰试命名规则;
- 变量名语义明确;
- 变量名采用英文、数字等方式,禁止使用拼音,首字符应小写;
- 同一类型的UI变量名请以类型开头后接实际功能英文语义,例如:btnLogin,imageViewLogo等 而不是loginBtn,好处在于便于编译器联想;
- 变量名使用名词,普通变量名采用单数,集合类变量名采用复数;
- 相对独立的程序块之间,变量声明之后必须加空行
- 常量
- 全局常量名需大写,以下划线(_)分割各个单词的语义
方法&函数 - 方名采用驼峰试命名规则;
- 方名语义明确;
- 方名采用英文、数字等方式,禁止使用拼音,首字符应小写;
- 单一职责,一个方法里只负责一件事
- 方法里代码功能较多时(eg:一个view中含有多个控件,初始化控件时)请将方法按照说明4单一职责进行拆分;
- 方法里的代码需要少于100行
- 其他说明
- if、for、while、switch括号前后加空格;
- if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{};
- 比较操作符,赋值操作符”=”、”+=”,算术操作符”+”、”%”,逻辑操作符”&&”、”&”,位域操作符”<<”、”^”等双目操作符的前后加空格;
- “!”、”~”、”++”、”–”、”&”(地址运算符)等单目操作符前后不加空格;
- 一行只写一条语句
- 较长的语句(>80字符)要分多行书写,折行时操作符放在新行之首
- 没有用或者没有使用的代码请移除掉
- 注释
- 注释语言必须准确、易懂、简洁;
- 注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开;
- 注释与所描述内容进行同样的缩排;
- 将注释与其上面的代码用空行隔开;
- 单行注释时 “//”后需要加一个空格
- OC语言相关规范
- 除了局部变量,请尽量使用属性(@property)
- 数组声明时需要添加上数组里存储的对象类型说明;
- 正确:Array arrayMember<Member >
- 错误:Array *arrayMember<>
- 使用BOOL值时,确保使用YES和NO,禁止使用ture和false
- if、while判断时,请将字面值放在前面,避免手误产生bug,
- 正确:if (25 == age)
- 错误:if (age == 25)
- 禁止使用关键字定义变量
- 宏定义时,请保证每个小语句都用小括号()包起来
- swift语言相关规范
- swift语言里确定不会改变的请使用let关键字定义
- 类型说明在冒号后添加一个空格;
- 正确:let mdn: String
- 错误:let mdn:String
- 可选值解包时请确定保证有值,如无法确定,请做好if let或者guard let的判断处理
- 实体尽量使用Struct,因为Struct为值类型,Class是引用类型
- 枚举,结构体是值类型,类是引用类型
- 什么时候该用值类型:
- 要用==运算符来比较实例的数据时
- 你希望那个实例的拷贝能保持独立的状态时
- 数据会被多个线程使用时
- 什么时候该用引用类型(class):
- 要用==运算符来比较实例身份的时候
- 你希望有创建一个共享的、可变对象的时候
- 实现多个协议时,尽量使用扩展extension来进行处理
- 推荐的方式
|
|
* 不推荐的方式
|
|
- 第三方使用规范
- 统一使用cocoapods来管理第三方代码
- 导入第三方代码时,需明确版本号
- 正确: pod ‘RxSwift’, ‘4.4.0’,
- 错误: pod ‘RxSwift’ / pod ‘RxSwift’, ‘~4.4.0’