iOS 编码规范和编码习惯

  • 使用4个空格进行缩进。(可在Xcode的Preferences中进行设置)
  • 左大括号写在首行。eg:
class TestClass {
    /* ... */
}
  • 二元运算符前后添加空格。eg:
let testValue = 1 + 2
  • 添加有必要的注释(使用Xcode注释快捷键)。eg:
// 测试按钮
var testBtn:UIButton
/// <#Description#>
///
/// - Parameter testValue: <#testValue description#>
/// - Returns: <#return value description#>
func testFunction(testValue: Int) -> Int {
    /*...*/
}
  • 图片命名要清晰。eg:


    iOS 编码规范和编码习惯_第1张图片
    与功能相对应命名图片
  • 变量命名应该能推断出该变量类型,或以变量类型结尾。eg:
let coverImageView: UIImageView
let firstName: String
  • 接口命名与后台所提供的保持一直,由请求路径、接口名和请求后缀组成。 eg:


    iOS 编码规范和编码习惯_第2张图片
    GetVipColors接口.jpg
  • 接口的请求建议一次封装多处使用,尤其是像获取用户信息这种。eg:


    iOS 编码规范和编码习惯_第3张图片
    对GetVipColors接口的封装.jpg
  • 类型多时使用枚举,枚举名字和功能对应 eg:
/// 房间类型
///
/// - common: 普通模式
/// - handPattern: 相亲
/// - pkPattern: 团战
enum RoomShowType:String {
    case common = "common"
    case handPattern = "hand_pattern"
    case pkPattern = "pk_pattern"
}
  • 可选型使用guard或者if let解包后使用。eg:
// guard 解包
guard let giftView = giftViewArr[toMicId] else {return}
// if let 解包
if let giftView = giftViewArr[toMicId] {
}
// if let 解包多个
if let subview = subview, let volume = volume {
}
  • block的执行如果存在延迟,需要用weak来规避强引用。 eg:
DispatchQueue.main.asyncAfter(deadline: .now() + 2) { [weak self] in
    if let weakself = self{
        weakself.rainLayer.birthRate = 0
    }
}
  • 使用// MARK: - XXX进行分组。eg:
/// MARK: - System
// MARK: - Public
// MARK: - Action
// MARK: - Private
// MARK: - xxxDelegate
  • 控制代码段大小(比如有一个100行的代码块,其中50行代码是实现了某个动画,则把这50行代码封装为另一个代码块)
  • 较大功能或逻辑的修改,最好标记一下。eg:
// modified by FangLin 2018-01-01
  • 在取可变数组中的元素时,要考虑数组越界的情况。
  • 修改后的代码要进行编译验证。

你可能感兴趣的:(iOS 编码规范和编码习惯)