Как отлаживать код в Java API — стиль программирования

#java #debugging #api

#java #отладка #API

Вопрос:

Я пишу API, который мне нужно передать следующему разработчику в виде jar-файла, который он / она будет использовать в своей программе. Каков наилучший способ написания отладочного кода внутри API, который будет управляться использующим его кодом.

Большое спасибо.

Ответ №1:

  1. Регистрируйте на разных уровнях: уровень отладки для мельчайших деталей, информация для полезных вещей, предупреждение для плохих вещей.
  2. Предоставьте средства тестирования, открыв свой API через интерфейсы, чтобы упростить редактирование. Это позволяет тестировать различные сценарии как внутри вашего API, так и в коде, который его использует.
  3. Предоставьте точки расширения (используя те же интерфейсы), чтобы максимально удовлетворить непредвиденные потребности. (Вы не получите их все, но так оно и есть.)
  4. Предоставьте образцы кода и / или модульные тесты, которые используют основную часть функциональности API.
  5. Предоставьте письменную документацию, которая объясняет, почему все работает так, как они работают. Код объясняет, как это работает.

Ответ №2:

Я думаю, вы говорите о журнале отладки? используйте log4j:

 if (log.isDebugEnabled()) {
    log.debug("xxxxxxxxxxxxxxxxxxxxxxx");
}
  

ОБНОВЛЕНИЕ: log4j может настроить log level для определенного класса: поместите следующее в log4j.properties

 log4j.logger.com.test.Test=DEBUG
  

Комментарии:

1. На самом деле мой вопрос заключается в том, как мое ведение журнала будет согласовываться с «внешним» ведением журнала. У них уже есть свой уровень ведения журнала в приложении. И они хотят установить другое ведение журнала для вызовов API.

Ответ №3:

Если вы просто отправляете JAR, было бы так здорово не зависеть от log4j в первую очередь, а позволить пользователям вашего плагина создавать свой собственный «LoggerFactory». Все «Регистраторы», которые вы получаете в своем коде, получены через эту фабрику таким же образом, как вы извлекли бы их из log4j (например, путем передачи имени класса), и должны иметь аналогичные уровни.

Таким образом, клиенты, которые хотят использовать log4j, все еще могут, а клиенты, которые используют другой регистратор, могут подключить его в один миг.