保持库无依赖性

时间:2010-10-26 07:51:32

标签: c# java dependency-management

我有一个小的实用程序库,其中包含一些经过完全单元测试的实用方法。目前,我的库没有外部依赖。我正在考虑将记录添加到我的类中,这可能对调试有用。但这意味着将日志库与我的项目捆绑在一起。

我的问题是:我应该保持我的图书馆依赖免费吗?这样做有什么好处吗?

4 个答案:

答案 0 :(得分:5)

我会添加一个可用于抽象日志记录的日志记录界面。然后允许用户通过此界面添加日志记录。您也应该使用此接口,并且应该提供内置在库中的“NullLogger”,如果不需要其他日志记录,将使用该“NullLogger”。

通过要求用户配置新的NullLogger,只需通过配置文件或运行时发现,就可以轻松不使用NullLogger。

答案 1 :(得分:1)

这样做有很多好处,尤其是在大多数操作系统上运行的能力。

保持库非常依赖的一种方法是在使用之前要求它进行初始化。然后你会在your_lib_init(); function接受一个指向后端记录的函数指针。这意味着,可以为可能运行的任何平台重写后端。

还要弄清楚,如果你想要一个完全没有所有库依赖项的库,或者一个依赖于标准类路径的库。如果它是纯Java,它将在J2ME,Android,本地编译的Java上运行GCJ而不是。如果它使用类路径,它将在所有类路径实现中移植,实际上在OpenJDK运行的任何地方。

答案 2 :(得分:1)

使用Java Logging。它是JRE / JDK的一部分,因此不需要外部库。

查看examples

答案 3 :(得分:0)

临:

  • 你的图书馆会小得多(很可能你只使用了任何依赖项的全部功能的一小部分)。
  • 没有更新地狱(就像你的代码需要库C,版本2,产品X需要你的代码和库C,版本1)。
  • 您不需要将勺子弯曲到其他人的想法(比如你从1.x到2.x的图书馆 - >你需要更新你的代码)

缺点:

  • 如果产品X也需要库,则浪费代码
  • 你有多聪明?有可能你无法与已进入图书馆的思想,智慧和时间相匹配。

PS:如果您想支持日志记录,请在代码中添加slf4j;这是一个30KiB API,允许您的代码用户使用任何日志框架。 使用commons-logging