Skip to content

Выполнить задание 6 спринта - рефакторинг InMemoryHistoryManager - #2

Merged
milayadasha merged 1 commit into
mainfrom
sprint_6-solution
Oct 8, 2025
Merged

milayadasha merged 1 commit into
mainfrom
sprint_6-solution

Conversation

@milayadasha

Copy link
Copy Markdown
Owner
  1. Преобразовать InMemoryHistoryManager в двусвязный список с мапой для хранения узлов
  2. Переделать метод добавления и получения истории, чтобы хранить только последнюю версию задачи
  3. Добавить в методы удаления задач удаление из истории
  4. Исправить методы get*byId для возврата копий задач
  5. Исправить метод getCopy для Epic, чтобы делать копию вместе со списком подзадач
  6. Добавить тесты для нового функционала
  7. Переделать Main файл для тестирования нового функционала

…бавлением соответствующих пользовательских сценариев и юнит-тестов.

@maks-avilow maks-avilow left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Дарья привет!
Ты отлично справилась с ключевой задачей этого спринта — реализацией эффективной истории просмотров с поддержкой дедупликации и удаления за O(1). Это непростая тема, особенно когда нужно совместить двусвязный список и хеш-таблицу

Что особенно хорошо получилось:
-корректная архитектура HistoryManager
-ты правильно реализовала InMemoryHistoryManager с использованием HashMap<Integer, Node> и двусвязного списка — именно так и должно быть, чтобы обеспечить константное время на добавление и удаление
-полное соответствие интерфейсу: все методы (add, remove, getHistory) реализованы в точности по ТЗ.
Тестовый сценарий в Main: ты не просто написала код, а проверила его в деле — создала задачи, эпики, подзадачи, проверил историю, дедупликацию и удаление. Молодец!
TaskManager и HistoryManager работают независимо, но согласованно — это признак хорошего проектирования. Небольшие замечания (на будущее):

  • в InMemoryHistoryManager можно было бы обойтись без дополнительного копирования задачи (getCopy()), так как копия уже создаётся в менеджере. Но это не сломало логику — дедупликация работает корректно.
  • лишний метод getTasks() в истории лучше убрать, чтобы не запутать других разработчиков — история должна возвращать задачи только через getHistory() и только в порядке просмотра.
    Но учитывая, что все ключевые требования выполнены, а основная логика работает стабильно — работа принимается

@milayadasha
milayadasha merged commit 74b92d3 into main Oct 8, 2025
1 check passed
@milayadasha
milayadasha deleted the sprint_6-solution branch October 8, 2025 14:52
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

Successfully merging this pull request may close these issues.

2 participants