如果库有一些副作用,这可以吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果库有一些副作用,这可以吗?相关的知识,希望对你有一定的参考价值。

我正在开发一些Kotlin库,我有以下概念问题:

  1. 第一个库基于spring的类路径扫描程序,旨在用作弹簧扩展,因此它将spring-core作为依赖项。这个可以吗?我的库的潜在用户如何处理不同的弹簧版本?
  2. 第二个库首先基于它,它旨在用于p2p网络。它与其他对等体同步,并提供共享状态,库用户可以使用特殊的预定义spring服务轻松检索。图书馆有这样的副作用吗?也许有一些模式来实现/分发这些库?

如果这还不行,请指导我如何做到这一点。提前致谢。

答案

这是一个普遍的问题,具体的例子将有助于理解这是“好”还是“不好”。

但总的来说:

  1. 如果您的库依赖于特定版本的其他库,那就没关系。大多数图书馆都这样做。问题是你依赖的这个图书馆有多么沉重和突兀。不幸的是,对于你来说,Spring库是众所周知的。对于您图书馆的最终用户,如果发生冲突,他只需要选择是否要为您的图书馆更新他的Spring版本
  2. 具有一些分布状态不一定是副作用。例如,EhCache是​​一个分布式缓存库。基本模式应尽可能的SOLID。当我开发caching for Vert.x WebClient library时,我使它依赖于接口而不是可靠的实现,所以如果有人决定他不想使用你的库(例如Spring组件),他可以提供替代解决方案。

同样,这些是基本准则,没有看到您的代码。如果您打算开源它,请随意分享特定位以从StackOverflow社区获得更具体的见解。

以上是关于如果库有一些副作用,这可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥显示键盘后我的滚动不起作用?

JQuery 平滑滚动 - 这可以简化吗?

Java的类与接口有什么作用?支持多继承吗?

UIButton 在 UITableView 中不起作用(点击时崩溃)?我可以得到一些关于 obj-c 的帮助吗

pmp证书能起到啥作用啊?

Angular JS:当我们已经有了具有作用域的指令控制器时,还需要指令的链接函数吗?