Ревью и рефакторинг проекта "Tennis Scoreboard" на Java от студента @RomanV79

YOUTUBE · 01.12.2025 06:18

Ключевые темы и таймкоды

Ревизия проекта табло теннисного матча

0:00
  • Проект написан на Java без фреймворка, использует H2 в качестве БД, HTML, CSS для интерфейса.
  • Мотивация проекта: попробовать MVC без фреймворка и сложную бизнес логику.

Архитектура и дизайн проекта

4:51
  • Используется NVC подход, контроллеры, сервисы, модели, сущности.
  • Структура проекта: контроллеры отдельно, модели отдельно, сущности отдельно, сервисы отдельно.
  • Замечания: избыточность кода, отсутствие иконок, пагинация без информации о количестве элементов и страниц.

Код и замечания

9:43
  • Класс NewMatchStarter является точкой входа для создания нового матча.
  • Сервис MatchService отвечает за хранение и управление матчами.
  • Сервис является синглтоном, что нарушает принцип инкапсуляции.
  • Класс Server отвечает за показ списка матчей и поиск по игроку.
  • Замечание: использование Hibernate для поиска по имени игрока, вместо использования Select.

Проблемы с кодом

13:41
  • Видео обсуждает проблемы с кодом, связанные с фильтрацией данных и пагинацией.
  • Автор предлагает использовать запросы для фильтрации данных и использовать лимит и смещение для пагинации.

Проблемы с логикой подсчета очков

21:29
  • Автор критикует логику подсчета очков, которая реализована в одном классе и содержит много сложной логики.
  • Предлагается разбить логику подсчета очков на отдельные блоки, чтобы сделать код более понятным и удобным для тестирования и изменения.

Переписывание кода

26:24
  • Автор предлагает переписать код, разбив логику подсчета очков на отдельные блоки и классы.
  • Это позволит сделать код более понятным, тестируемым и гибким для изменения в будущем.

Счет в матче

27:21
  • В видео обсуждается счет в матче, который состоит из двух игроков и имеет массив для счета каждого игрока.
  • Счет игрока может быть 0 или 1, и каждый элемент массива знает свой следующий элемент.
  • Метод pointOne используется для обновления счета игрока в зависимости от его текущего состояния.

Тестирование и документация

31:16
  • В видео обсуждаются тесты, которые проверяют логику подсчета очков в матче.
  • Тесты описывают различные сценарии развития матча и проверяют каждый шаг.
  • Тесты также могут служить дополнительной документацией для кода.

Реализация интерфейса

37:05
  • В видео автор обсуждает реализацию интерфейса верстки без использования зависимостей.
  • Он использует Flexbox для создания таблицы и подчеркивает преимущества этого подхода.

Рекомендации по улучшению

38:04
  • Автор рекомендует улучшить реализацию подсчета очков в матче, разбив его на блоки и используя тесты для покрытия логики.
  • Он также предлагает использовать локальные переменные вместо полей для работы с коллекциями матчей.