编码风格
一般规则
1. 集合转换
// ✅推荐使用
let stringOfInts = [1, 2, 3].flatMap { String($0) }
// ❌不推荐
var stringOfInts: [String] = []
for integer in [1, 2, 3] {
stringOfInts.append(String(integer))
}// ✅推荐使用
let evenNumbers = [4, 8, 15, 16, 23, 42].filter { $0 % 2 == 0 }
// ❌不推荐
var evenNumbers: [Int] = []
for integer in [4, 8, 15, 16, 23, 42] {
if integer % 2 == 0 {
evenNumbers.append(integer)
}
}2. 代理弱引用
3. 闭包弱引用
4. 类型推断
5. 方法重写
6. 类方法和类属性
7. 计算属性
变量
1. let 和var
let 和var 2. 属性值
3. 类型推导
4. 具有描述性
5. 避免重复
常量
1. 私有常量
2. 定义常量
3. 静态常量
4. 不必使用K前缀
K前缀5. 文件级常量
元组
1. 函数返回值
2. 重定义
访问修饰符
1. 顺序
2. 同一行内声明
3. 默认修饰符
4. 单元测试
5. 私有
6. 公开
自定义操作符
1. 避免自定义运算符
2. 重写现有操作符
3. 更多参考
Switch 和 Enums
1. break
2. default
3. 对齐
4. 关联值
5. list case
6. 抛出错误
7. 避免写出枚举类型
可选值
1. 避免强制解包
2. 可选类型
3. 显示比较
4. 避免使用unowned
unowned5. 使用相同名称解包
6. 多个可选绑定
7. 多个可选绑定的格式
协议
1. 组织代码
2. @objc
3. 多个类使用同一协议
4. 仅支持class的协议
属性
1. 只读计算属性
2. 代码缩进
3. newValue,oldValue
4. 单例的实现
5. 懒加载
三目运算符
闭包
1. 省略类型
2. 行数
3. 简写参数
4. 尾随闭包
代理
1. 委托源
数组
1. 避免下标访问
2. 迭代
3. 连接数组
guard 的使用
guard 的使用1. 尽早退出
2. 完整性检查
3. 避免单行guard语句
guard语句4. 使用范围
5. 状态选择
最后更新于