7

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

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

4

4 回答 4

5

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

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

于 2010-10-26T07:55:02.793 回答
1

这样做有很多优点,尤其是能够在大多数操作系统上运行。

使您的库完全无依赖性的一种方法是要求它在使用前进行初始化。然后你会在 your_lib_init(); function 将函数指针指向日志记录后端。这意味着,可以针对可能运行的任何平台重写后端。

还要弄清楚,如果您想要一个完全没有所有库依赖关系的库,或者一个依赖于标准类路径的库。如果是纯 Java,它将在 J2ME、Android、本地编译的 Java 和GCJ上运行,等等。如果它使用类路径,它将在所有类路径实现中可移植,实际上无论在哪里运行 OpenJDK。

于 2010-10-26T07:54:43.117 回答
1

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

查看示例

于 2010-10-26T07:57:24.377 回答
0

临:

  • 您的库会小得多(您可能只使用了任何依赖项的全部功能的一小部分)
  • 没有更新地狱(就像您的代码需要库 C,版本 2,产品 X 需要您的代码和库 C,版本 1)。
  • 您无需随心所欲地弯曲勺子(例如,您从 1.x 升级到 2.x 的库 -> 您需要更新代码)

缺点:

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

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

于 2010-10-26T08:00:24.803 回答