整理您的Swift班
我一直使用Xcode注释来组织代码并提高其可读性。 最后,我得到了几乎在每个类中都使用的模式,这使我可以更高效地工作。
可读性
我努力在所有班级中建立一个良好的组织,它可以帮助我快速找到想要的内容。
无论选择哪种模式,重要的是始终在项目中重复使用同一组织 。 然后,您可以打开任何文件,直接进入感兴趣的部分,因为您知道文件的位置。
图案
看完有关高级集合视图的WWDC 2015示例代码后,我为类添加了注释模式(即使我知道,没有人喜欢Apple示例代码)。
此模式对于视图控制器和视图最为有效,这是常规iOS项目中最常见的类。 但是您仍然可以在其他类中重用它的一部分。
- 类型 :包含枚举,
- 属性 :所有属性(IBOutlet,let,var等),
- 查看生命周期 :所有viewDid…方法,
- 生命周期 :init和deinit方法,
- Layout :layoutSubviews…方法,
- 设置 :查看和数据初始化,
- 动作 :用户执行的动作(IBAction,UIGestureRecognizer等),
- UIStoryboardSegue处理 :prepareForSegue…方法,
- 通知 :通知方法,
- 便利性 :界面更新,所有便利性方法(例如cellForType),
- 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
)。
就个人而言,我也喜欢在课堂上使用绿色作为分隔符的事实,它看起来更干净(我完全意识到这对色盲人士来说是愚蠢的论据)。
最后的想法
使用批注组织课程可以使您在浏览文件时非常有效 ,尤其是在团队中工作时 ,必须处理同事的代码和工作方式。
首先定义您的团队同意的模式并尝试应用它,您将看到阅读同事的代码变得多么容易!