9

我是框架 X 的作者,我想分发一点点胶水代码,以选择性地与框架 Y 和 Z 集成。客户端应该能够将 X 用作独立框架,但能够使用集成代码如果他们也使用 Y 和/或 Z。

头条问题是:目前是否有这样做的最佳实践,以及权衡是什么?详细的子问题如下。

我的具体情况:我是Siesta的作者。与 SwiftyJSONAlamofire集成只需要一点代码。但是,Siesta 不需要这些框架中的任何一个。

我看到两个可接受的选择:

  1. 在我的 Xcode 构建中将框架 Y 和 Z 配置为框架 X 的可选依赖项。
  2. 分发单独的框架:X 核心、X+Y 粘合和 X+Z 粘合。

选项 1 乍一看似乎很有希望。这不正是可选依赖项的用途吗?但我担心,因为:

  • 我没有看到广泛使用的可选依赖项。
  • 我不清楚我是否会通过这样做将客户固定到特定版本的 Y 和 Z。
  • 那些使用 Carthage 从源代码构建 X 的人呢?看起来即使他们不使用 Y 或 Z,他们也必须在他们的框架中包含这些框架Cartfile.private才能构建 X。

选项 2 很简单,但我担心开销。即使是 noop 框架的时钟也超过 250k。在最终的应用程序中仍然那么糟糕吗?如果我走那条路,我应该关注每个框架的开销吗?

还有其他我不知道的权衡吗?

4

0 回答 0