如果图书馆有一些副作用,这可以吗?
Is this ok if library has some side effects?
我正在开发一些 Kotlin 库,但遇到以下概念问题:
第一个库基于 spring 的类路径扫描器,旨在用作 spring 扩展,因此它将 spring-core 作为一种依赖。这个可以吗?我的图书馆的潜在用户将如何处理不同的 spring 版本?
第二个库基于第一个库,旨在用于 p2p 网络。它与其他对等点同步并提供共享状态,图书馆用户可以使用特殊的预定义 spring 服务轻松检索该状态。图书馆有这样的副作用可以吗?也许 implementing/distributing 这样的库有一些模式?
如果这不行,请指导我如何正确执行此操作。
提前致谢。
这是一个有点笼统的问题,具体的例子将有助于理解是 "okay" 还是 "not okay" 来做。
但一般来说:
- 如果你的库依赖于其他特定版本的库也没关系。大多数图书馆都有。问题是你所依赖的这个库有多沉重和突兀。对您来说不幸的是,Spring 图书馆是众所周知的。对于您图书馆的最终用户,如果发生冲突,他只需选择是否要为您的图书馆更新他的 Spring 版本
- 拥有一些分布式状态不一定是副作用。例如,EhCache 是一个分布式缓存库。基本模式是尽可能坚固。当我开发 caching for Vert.x WebClient library 时,我让它依赖于接口而不是可靠的实现,所以如果有人决定他不想使用你的库(例如 Spring 组件),他可以提供一个替代方案解决方案。
同样,这些是基本准则,没有看到您的代码。如果您打算将其开源,请随时分享具体内容,以从 Whosebug 社区获得更具体的见解。
我正在开发一些 Kotlin 库,但遇到以下概念问题:
第一个库基于 spring 的类路径扫描器,旨在用作 spring 扩展,因此它将 spring-core 作为一种依赖。这个可以吗?我的图书馆的潜在用户将如何处理不同的 spring 版本?
第二个库基于第一个库,旨在用于 p2p 网络。它与其他对等点同步并提供共享状态,图书馆用户可以使用特殊的预定义 spring 服务轻松检索该状态。图书馆有这样的副作用可以吗?也许 implementing/distributing 这样的库有一些模式?
如果这不行,请指导我如何正确执行此操作。 提前致谢。
这是一个有点笼统的问题,具体的例子将有助于理解是 "okay" 还是 "not okay" 来做。
但一般来说:
- 如果你的库依赖于其他特定版本的库也没关系。大多数图书馆都有。问题是你所依赖的这个库有多沉重和突兀。对您来说不幸的是,Spring 图书馆是众所周知的。对于您图书馆的最终用户,如果发生冲突,他只需选择是否要为您的图书馆更新他的 Spring 版本
- 拥有一些分布式状态不一定是副作用。例如,EhCache 是一个分布式缓存库。基本模式是尽可能坚固。当我开发 caching for Vert.x WebClient library 时,我让它依赖于接口而不是可靠的实现,所以如果有人决定他不想使用你的库(例如 Spring 组件),他可以提供一个替代方案解决方案。
同样,这些是基本准则,没有看到您的代码。如果您打算将其开源,请随时分享具体内容,以从 Whosebug 社区获得更具体的见解。