【发布时间】:2010-09-09 15:39:19
【问题描述】:
您认为使用 Guava 的最佳方式是什么?因为,在网站上,这些家伙说在发布 1.0 之前,界面可能会发生变化。考虑到这一点,您编写的代码不应直接依赖于这些接口,因此,您是否将所有调用的 Guava 代码包装到我们项目中的某种层或外观中,以便如果这些接口发生变化,那么您至少将这些更改集中在一个地方?
最好的方法是什么?我真的有兴趣开始使用它,但我有这个问题在我脑海中浮现哈哈:)
【问题讨论】:
您认为使用 Guava 的最佳方式是什么?因为,在网站上,这些家伙说在发布 1.0 之前,界面可能会发生变化。考虑到这一点,您编写的代码不应直接依赖于这些接口,因此,您是否将所有调用的 Guava 代码包装到我们项目中的某种层或外观中,以便如果这些接口发生变化,那么您至少将这些更改集中在一个地方?
最好的方法是什么?我真的有兴趣开始使用它,但我有这个问题在我脑海中浮现哈哈:)
【问题讨论】:
我不确定您从哪里了解到接口在 1.0 版之前会发生变化。 Guava 的前身 Google Collections 也是如此,但它已经发布了 1.0,现在是 Guava 的一部分。此外,Google Collections 中的任何内容都不会以可能破坏代码的方式进行更改。
Guava 本身甚至不使用带有“1.0”概念的发布系统。它只是does releases,标记为“r05”、“r06”等。 Guava 中的所有 API 都被有效地冻结,除非它们被标记为 @Beta 注释。如果@Beta 在类或接口上,则该类中的任何内容都可能发生变化。如果一个类没有注解,但类中的某些方法有注解,那么这些具体方法可能会发生变化。
请注意,即使使用@Beta API,它们提供的功能也很可能不会被完全删除……最多它们可能只是改变提供该功能的方式。此外,我相信他们正在弃用任何 @Beta API 的原始形式,他们在完全删除之前更改了 1 个版本,让您有时间查看它已更改并更新为该 API 的新形式。 @Beta 也不意味着一个类或方法没有经过充分测试或不适合生产使用。
最后,如果您正在开发使用 Guava 的应用程序,这应该不是什么大问题。随时更新到新版本应该很容易,如果您使用的任何@Beta API 发生更改,只需在这里和那里进行更改。真正需要避免使用 @Beta API 的是使用 Guava 编写库的人,因为使用 API 可能会导致您无法在应用程序中切换到较新版本的 Guava 或使用另一个使用较新版本的库,因为它会破坏旧库中依赖于更改/删除的 beta API 的代码。
【讨论】:
@Beta 注释。由于它不表示not final 状态,因此该库的行为与您必须了解新版本更改的任何其他库一样。这就是新版本的本质(我知道你永远不应该更改公共接口...... :-)。
@Beta 确实 表示某些东西不是最终的,并且在未来的版本中可能会发生变化......没有@Beta 的东西不会改变并且可以安全地用于其他库.
@Beta API 都被冻结,如果被弃用,只会在它们被弃用的发布后 18 个月内被删除。所以对于任何没有用 @ 注释的东西都有一些非常有力的保证987654334@.