世界互联网大会|iOS-代码细节优化四

世界互联网大会|iOS-代码细节优化四

今天我们接着前面的内容讲 , 都是一些很细的内容 , 但我们还是要在实践中牢记 , 形成一种习惯 。
【世界互联网大会|iOS-代码细节优化四】
一:字符串
1.使用\"\"\" , 在定义复杂字符串时 , 使用多行字符串字面量可以保持原有字符串的换行符号/引号等特殊字符 , 不需要使用转义符 。
2.使用字符串插值可以提高代码可读性 。 这里强调不要使用“+”去拼接字符串 , 使用多了你会发现很耗时 , 运行、打包速度越来越慢 。
3.使用标准库提供的高阶函数 。
二:访问控制

  1. 使用private/fileprivate修饰私有属性方法 。
  2. 使用private(set)修饰外部只读/内部可读写属性 。
三:函数
  1. 使用参数默认值 , 可以使调用方传递更少的参数 。
  2. 限制参数数量 , 当方法参数过多时考虑使用自定义类型代替 。
  3. 使用@discardableResult , 一些方法并不一定会处理返回值 , 可以考虑添加@discardableResult标识提示Xcode允许不处理返回值不进行warning提示 。
四:其它一些内容
1.避免过长的元组 。 元组虽具有类型信息 , 但并不包含变量名信息 , 使用方并不清晰知道变量的含义 。 所以当元组数量过多时考虑使用自定义类型代替 。
2.系统库 。 KVO/Notification 使用 block API 。
3.使用protocol代替继承 。 Swift中针对protocol提供了很多新特性 , 如默认实现关联类型、支持值类型 。 在代码设计时可以优先考虑使用protocol来避免臃肿的父类同时更多使用值类型 。
4.使用extension组织代码 。 将私有方法/父类方法/协议方法等不同功能代码进行分离更加清晰/易维护 。
五:代码风格

我们都知道代码可读性的重要性 , 良好的代码风格可以提高代码的可读性 , 而统一的风格可以降低团队内相互理解成本Swift的代码格式化建议使用自动格式化工具实现 , 将自动格式化添加到代码提交流程 , 通过定义Lint规则统一团队内代码风格 。 考虑使用SwiftFormatSwiftLint
六:性能优化
这里主要关注运行时性能和体积大小 。
1.使用Whole Module Optimization 。 编译器可以将整个程序编译为一个文件进行更多的优化 。 如通过推断final/函数内联/泛型特化更多使用静态派发 , 并且可以移除部分未使用的代码 。
2.使用源代码打包 。 在使用组件化时 , 为了提高编译速度打包效率 , 通常单个组件独立编译生成静态库 , 最后多个组件直接使用静态库进行打包 。 这种场景下WMO仅针对internal以内作用域生效 , 对于public/open缺少外部使用信息所以无法进行优化 。 所以对于大量使用Swift的项目 , 使用