swift 中类型扩展的最佳实践

Best practices for extensions of Types in swift

我一直在我的项目中大量使用扩展程序,因为我觉得自定义程度很高。他们工作得很好 - 所以不用担心。

我想对您的 class 进行扩展,通常您会在 class 之外声明它,但在 同一文件 中。

如果我想对 'Array' 这样的类型进行扩展,那么我会在 class 之外声明扩展,但在我需要扩展功能的同一文件中。但是,'Array' 的这一扩展功能现在将在我的项目中的所有文件中可用。

我的问题是:如果我知道我在整个项目中需要一些扩展功能,是否有任何 good/bad 实践来说明我在哪里声明这个扩展?

我担心的是,当在项目的其他文件中使用新功能时,他们可能必须创建对声明扩展名的文件的引用。虽然我不知道这实际上是如何工作的。只是想确保我没有无意中将所有文件与特定的 viewcontroller/model 或类似的互连。

我通常不会在 ViewController 的任何地方实现扩展,因为如果 5 个 VC 需要 5 个不同的扩展功能来实现一个 Array 那么我们必须写 extension Array { } 在 5 个 VC 中,这将使导航和找到扩展功能的实现变得困难。所以我实际上做的是在项目层次结构中创建一个扩展文件夹,我将在其中创建一个名为 Array+Extension.swift 的文件。所有与数组扩展有关的函数都将放在 Array+Extension 文件中。上图给你一个清晰的画面。