整理您的Swift班

我一直使用Xcode注释来组织代码并提高其可读性。 最后,我得到了几乎在每个类中都使用的模式,这使我可以更高效地工作。

可读性

我努力在所有班级中建立一个良好的组织,它可以帮助我快速找到想要的内容。

无论选择哪种模式,重要的是始终在项目中重复使用同一组织 。 然后,您可以打开任何文件,直接进入感兴趣的部分,因为您知道文件的位置。

图案

看完有关高级集合视图的WWDC 2015示例代码后,我为类添加了注释模式(即使我知道,没有人喜欢Apple示例代码)。

此模式对于视图控制器视图最为有效,这是常规iOS项目中最常见的类。 但是您仍然可以在其他类中重用它的一部分。

  1. 类型 :包含枚举,
  2. 属性 :所有属性(IBOutlet,let,var等),
  3. 查看生命周期 :所有viewDid…方法,
  4. 生命周期 :init和deinit方法,
  5. Layout :layoutSubviews…方法,
  6. 设置 :查看和数据初始化,
  7. 动作 :用户执行的动作(IBAction,UIGestureRecognizer等),
  8. UIStoryboardSegue处理 :prepareForSegue…方法,
  9. 通知 :通知方法,
  10. 便利性 :界面更新,所有便利性方法(例如cellForType),
  11. UI…Delegate :所有委托方法。

然后在每个注释中,按照Bob叔叔在他的书Clean Code中的建议,按调用顺序编写方法。

Swift扩展

Swift带来了使用Swift扩展将代码组织成较小的砖块的可能性。 我完全同意将这种方法用于协议一致性:

class ViewController: UIViewController { 
// MARK: - Setup
  // Put all the setup methods here 
  // MARK: - Actions 
  // Put all the actions methods here 
}
 // MARK: UITableViewDelegate 
extension ViewController: UITableViewDelegate { }

但是,您可以按照Nataha The Robot的建议,通过使用Swift扩展对方法进行分组来走得更远:

 class ViewController: UIViewController { } 
 // MARK: - Setup 
extension ViewController {
// Put all the setup methods here
}
 // MARK: - Actions 
extension ViewController {
// Put all the actions methods here
}
 // MARK: UITableViewDelegate 
extension ViewController: UITableViewDelegate { }

使用此方法的不利之处在于您还不能覆盖扩展中的方法 ,这对于在单元测试中模拟数据非常有用。

但是,从组织的角度来看,这很好,只是不要忘记为每个扩展 添加注释 ,否则您将不知道每个部分的含义。 最重要的是,您没有充分利用使用注释的最大优势:提高Xcode源导航器的可读性(快捷方式: Ctrl + 6 )。

就个人而言,我也喜欢在课堂上使用绿色作为分隔符的事实,它看起来更干净(我完全意识到这对色盲人士来说是愚蠢的论据)。

最后的想法

使用批注组织课程可以使您在浏览文件时非常有效 ,尤其是在团队中工作时 ,必须处理同事的代码和工作方式。

首先定义您的团队同意的模式并尝试应用它,您将看到阅读同事的代码变得多么容易!