Хранение библиотеки без зависимостей - PullRequest
7 голосов
/ 26 октября 2010

У меня есть небольшая библиотека утилит, содержащая некоторые полезные методы утилит, которые были полностью протестированы модульно. На данный момент моя библиотека не имеет внешних зависимостей. Я играю над идеей добавления журналов в мои классы, которые могут быть полезны для целей отладки. Но это будет означать объединение библиотек журналов вместе с моим проектом.

У меня вопрос: я должен оставить свою библиотечную зависимость свободной? Есть ли у этого преимущества?

Ответы [ 4 ]

5 голосов
/ 26 октября 2010

Я бы добавил интерфейс регистрации, который можно использовать для абстрагирования регистрации. Затем пользователи могут добавлять протоколирование через этот интерфейс. Вам также следует использовать этот интерфейс, и вы должны предоставить встроенный в вашу библиотеку NullLogger, который бы использовался, если бы не требовалось никакого другого ведения журнала.

Вы можете легко не использовать NullLogger, попросив пользователей настроить новый, просто с помощью файла конфигурации или обнаружения во время выполнения.

1 голос
/ 26 октября 2010

Использовать Java Logging .Это часть JRE / JDK, поэтому внешние библиотеки не нужны.

Проверьте примеры .

1 голос
/ 26 октября 2010

Это дает много преимуществ, не в последнюю очередь - возможность работать в большинстве операционных систем.

Один из способов сохранить вашу библиотеку в достаточной степени свободной - это потребовать ее инициализации перед использованием.Тогда вы бы в your_lib_init ();Функция принимает указатель на функцию регистрации бэкэнда.Это означает, что бэкэнд может быть переписан для любой платформы, на которой он может работать.

Также выясните, хотите ли вы, чтобы библиотека была полностью свободна от всех библиотечных зависимостей, или библиотека, которая зависит от стандартного пути к классам.Если это чистая Java, она будет работать на J2ME, Android, нативно скомпилированной Java с GCJ , а что нет.Если он использует путь к классу, он будет переносимым на все реализации пути к классам, практически везде, где работает OpenJDK.

0 голосов
/ 26 октября 2010

Pro:

  • Ваша библиотека будет намного меньше (есть вероятность, что вы используете только небольшую часть полной функциональности любой зависимости)
  • Никаких обновлений ада (как ваш код нуждается в библиотеке C, версия 2, для продукта X нужен ваш код и библиотека C, версия 1).
  • Вам не нужно будет пригибать свою ложку к прихотям кого-то другого (скажем, библиотека, в которой вы переходите с 1.x на 2.x -> вам нужно обновить код)

Con:

  • Потерянный код, если продукт X также нуждается в библиотеке
  • Насколько ты умный? Скорее всего, вы не можете сравниться с мыслью, мудростью и временем, которые уже ушли в библиотеку.

PS: Если вы хотите поддерживать ведение журнала, добавьте slf4j к своему коду; это API-интерфейс размером 30 КБ, который позволяет пользователям вашего кода использовать любую среду ведения журналов. не использовать регистрация общего доступа .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...