带有Sourcery的元编程Swift

我们都讨厌复制和粘贴无聊的重复样板代码。 它发生在每个项目中,尤其是iOS。 它出现在我们代码库的许多地方,这间接违反了DRY原理。 我们都知道这是一个坏兆头。

这个问题通常不会引起足够的重视。 这涉及到脱离我们的舒适区,因为生成代码可能很困难。

幸运的是,我们有一个解决方案可以在Swift项目中开始自动执行样板代码。 我在办公室为我们的项目寻找解决方案时偶然发现了它。 我花了很长时间才使事情顺利进行,所以我决定从一个简单的例子开始。

让我们看一下这个例子:

现在,我们想在代码的不同地方比较我们的Car结构。 因此,我们对其进行了扩展以符合Equatable协议

有些人可能会说: 好吧,这是一种方法……4行代码和一些复制粘贴。 确实 还不错

考虑一下:

  • 如果您在比较时错过了一个变量,那么Swift编译器将不会失败。
  • 每次添加新属性时,都必须记住要手动重新访问此方法。
  • 您可能具有跨多个文件(可哈希,描述,测试,枚举用例等)的多个样板功能。

处理这些案件将成为麻烦,重复和最危险的事情 这是所有偷偷摸摸的运行时错误都可以轻松出现的地方。