Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Code review #54

Closed
BigDeepBlue opened this issue Apr 3, 2024 · 2 comments
Closed

Code review #54

BigDeepBlue opened this issue Apr 3, 2024 · 2 comments

Comments

@BigDeepBlue
Copy link
Collaborator

Отлично реализовано👍

  1. Лишний файл async_api/tests/conftest.py - пустой
  2. В скриптах ожидания ES и Redis в тестах (async_api/tests/functional/utils/wait_for_elasticsearch.py и async_api/tests/functional/utils/wait_for_redis.py) вместо вечного цикла, в который можно попасть при возникновении сложностей, лучше использовать backoff из прошлых спринтов. Он более функционален в сравнении с вечным циклом, теоретически он может сигнализировать команде поддержки после определенного количества попыток.
  3. Не используйте прямое указание кодов ответов сервера (200, 400 и т.д.), применяйте http.HTTPStatus. Дело в том, что в коде проекта найти HTTPStatus.OK значительно проще чем найти 200, кроме того этим мы защитимся от опечаток, да и читаемость кода повысится.
  4. [можно лучше] Старайтесь больше использовать абстрактные классы в работе. В ваших сервисах у вас явно используется класс AsyncElasticsearch, а если со временем перейдем на другой сервис полнотекстового поиска, то придетс менять код приложения много где. У меня есть небольшой набросок, https://github.com/RomanAVolodin/FastAPI_DI/tree/feature/DI, вся работа идет с абстрактными классами, которые выступают в роли интерфейсов, а сопоставление абстрактного класса и его реализации происходит в одном месте, и если будет принято решение использовать другую реализацию, то достуточно будет внести изменение в одном месте кода.
@a1d4r
Copy link
Owner

a1d4r commented Apr 4, 2024

  1. Удалили в: Add abstract classes, remove empty conftest.py #55
  2. Использовали backoff, стало красивее: Use backoff in wait scripts #56
  3. В основном коде мы используем fastapi.status. В тестах кажется лишним использовать константы - они создают лишнюю когнитивную нагрузку. В моём понимании тесты должны быть простые и читаемые. Аргумент с поиском по проекту сомнительный, лично мне проще найти 200, чем HTTPStatus.OK. В поддержку литералов в тестах:
    https://medium.com/@erik.sacre/on-tdd-literals-versus-constants-in-tests-8ac992c7873f
  4. Создали базовый класс для сервисов: Add abstract classes, remove empty conftest.py #55. Отдельный слой в виде репозитория создавать не стали, так как сервисы и так не содержат никакой бизнес логики, и лишний слой был бы просто нагромождением.

@BigDeepBlue
Copy link
Collaborator Author

LGTM

@a1d4r a1d4r closed this as completed Apr 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants