Skip to content

Instantly share code, notes, and snippets.

@Asenim
Created June 28, 2024 12:54
Show Gist options
  • Save Asenim/db00ee016e68e22b363d0606ed0aca43 to your computer and use it in GitHub Desktop.
Save Asenim/db00ee016e68e22b363d0606ed0aca43 to your computer and use it in GitHub Desktop.

https://github.com/DmitriyDevv/currency-exchange-api
Ревью от Сергея Жукова

Серьезных проблем нет.

  • БД операции интересно обернуты в транзацию через лямбду, но иногда из-за этого пришлось изгаляться, чтобы получить результат испольнения лямбды
  • На мой вкус, валидация более уместна в контроллерах, чем в сервисах
  • Завязанные на SQL DAO ошибки я бы ловил в DAO, не в сервисах
  • Многовато статик методов в сервисах. Вместо этого можно создавать их там, где они нужны, или единожды создать при старте приложения, и положить в контекст. Статик методы будут неудобны, если потребуется что-то более сложное, например наследование. Ты так делаешь, например с CurrenciesDataAccess, но сервисы со статик методами
  • Вместо использования null я бы рассмотрел Optional.
  • Сервисы сразу кидают REST-специфичные эксепшены, что завязывает их на контекст REST API. Альтернатива - кинуть ExchangeRateNotFoundException, в сервлете обработать и перебросить в 404
  • Не везде очевидный нейминг, например DTO для ответа на запрос по конвертации называется Exchange. Я бы не экономил слова - ExchangeResponseDto
  • addCurrency в DAO слое возвращает void вместо всталенной валюты, приходится ходить делать SELECT, чтобы вернуть клиенту
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment