我是框架 X 的作者,我想分发一点点胶水代码,以选择性地与框架 Y 和 Z 集成。客户端应该能够将 X 用作独立框架,但能够使用集成代码如果他们也使用 Y 和/或 Z。
头条问题是:目前是否有这样做的最佳实践,以及权衡是什么?详细的子问题如下。
我的具体情况:我是Siesta的作者。与 SwiftyJSON或Alamofire集成只需要一点代码。但是,Siesta 不需要这些框架中的任何一个。
我看到两个可接受的选择:
- 在我的 Xcode 构建中将框架 Y 和 Z 配置为框架 X 的可选依赖项。
- 分发单独的框架:X 核心、X+Y 粘合和 X+Z 粘合。
选项 1 乍一看似乎很有希望。这不正是可选依赖项的用途吗?但我担心,因为:
- 我没有看到广泛使用的可选依赖项。
- 我不清楚我是否会通过这样做将客户固定到特定版本的 Y 和 Z。
- 那些使用 Carthage 从源代码构建 X 的人呢?看起来即使他们不使用 Y 或 Z,他们也必须在他们的框架中包含这些框架
Cartfile.private
才能构建 X。
选项 2 很简单,但我担心开销。即使是 noop 框架的时钟也超过 250k。在最终的应用程序中仍然那么糟糕吗?如果我走那条路,我应该关注每个框架的开销吗?
还有其他我不知道的权衡吗?