Правильный подход к рефакторингу дублированного вызова API для разных конечных точекJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Правильный подход к рефакторингу дублированного вызова API для разных конечных точек

Сообщение Anonymous »

У меня есть два метода, которые вызывают две разные конечные точки. Логика точно такая же, однако конечные точки API должны храниться отдельно. Как бы вы это реорганизовали?

Код: Выделить всё

    public List getAllCompanies(String authHeader) {
long start = System.currentTimeMillis();

List companies = new ArrayList();

long next = 0;

do {

CollectionResponse result = hubspotClient.getCompanies(authHeader, maxBatchSize, next, false, new ArrayList());

next = Optional.ofNullable(result.paging())
.map(Paging::next)
.map(Next::after)
.orElse(0L);

Envelope envelope = result.toEnvelope();
companies.addAll(envelope.items());

LOG.info("Loaded %d companies (next: %d, overall: %d)".formatted(
result.results().size(),
next,
companies.size()));

} while (next != 0);

LOG.info("Loaded %d companies in %ds".formatted(companies.size(), (System.currentTimeMillis() - start) / 1000));

return companies;
}

public List getAllContacts(String authHeader) {
long start = System.currentTimeMillis();

List contacts = new ArrayList();

long next = 0;

do {

CollectionResponse result = hubspotClient.getContacts(authHeader, maxBatchSize, next, false, new ArrayList());

next = Optional.ofNullable(result.paging())
.map(Paging::next)
.map(Next::after)
.orElse(0L);

Envelope envelope = result.toEnvelope();
contacts.addAll(envelope.items());

LOG.info("Loaded %d contacts (next: %d, overall: %d)".formatted(
result.results().size(),
next,
contacts.size()));

} while (next != 0);

LOG.info("Loaded %d contacts in %ds".formatted(contacts.size(), (System.currentTimeMillis() - start) / 1000));

return contacts;
}
Вслед за этим примером существуют и другие методы, которые вызывают отдельные уровни компании и сохраняемости контактов (их необходимо хранить в разных таблицах).
Я попробовал применить универсальные функции, но возникший в результате беспорядок был уродливее, чем сам дублированный код. Как правильно провести рефакторинг этого кода?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -endpoints
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»