Skip to content

Conversation

@DokPlay
Copy link
Owner

@DokPlay DokPlay commented Aug 6, 2025

  • src/manager/InMemoryHistoryManager.java

    • Реализован двусвязный список + HashMap<id,Node>
    • add(task) теперь удаляет дубликаты через removeNode за O(1)
    • remove(id) — новый метод HistoryManager
  • src/manager/TaskManager.java

    • в интерфейс добавлен void remove(int id)
  • src/manager/InMemoryTaskManager.java

    • вызовы historyManager.remove(...) в removeTask / removeEpic / removeSubtask
  • src/manager/HistoryManager.java

    • объявлен метод remove(int id)
  • tests

    • HistoryManagerTest — проверяет отсутствие дублей и порядок
    • InMemoryTaskManagerTest — проверка очистки истории при удалении, истории > 10, дубль-просмотров
    • TaskManagerHistoryIntegrationTest — интеграция: удаление эпика убирает эпик и все Subtask'и из истории

Issue: sprint-6 / ТЗ «неограниченная история без дублей»

* src/manager/InMemoryHistoryManager.java
  + Реализован двусвязный список + HashMap<id,Node>
  + add(task) теперь удаляет дубликаты через removeNode за O(1)
  + remove(id) — новый метод HistoryManager

* src/manager/TaskManager.java
  + в интерфейс добавлен void remove(int id)

* src/manager/InMemoryTaskManager.java
  + вызовы historyManager.remove(...) в removeTask / removeEpic / removeSubtask

* src/manager/HistoryManager.java
  + объявлен метод remove(int id)

* tests
  + HistoryManagerTest — проверяет отсутствие дублей и порядок
  + InMemoryTaskManagerTest — проверка очистки истории при удалении,
    истории > 10, дубль-просмотров
  + TaskManagerHistoryIntegrationTest — интеграция: удаление эпика убирает
    эпик и все Subtask'и из истории

Issue: sprint-6 / ТЗ «неограниченная история без дублей»
Copy link

@LexLippi LexLippi left a comment

Choose a reason for hiding this comment

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

Привет!

Хорошая работа!

Есть несколько мелких замечаний, которые необходимо исправить!

Желаю удачи!

Node oldTail = tail;
Node n = new Node(oldTail, task, null);
tail = n;
if (oldTail == null) head = n; else oldTail.next = n;
Copy link

Choose a reason for hiding this comment

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

Лучше в соответветствии с Google Java Code Style всегда использовать фигурные скобки, даже когда они опциональны:

https://google.github.io/styleguide/javaguide.html#s4.1.1-braces-always-used

/* ───── вспомогательные ───── */
private void linkLast(Task task) {
Node oldTail = tail;
Node n = new Node(oldTail, task, null);
Copy link

Choose a reason for hiding this comment

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

Лучше не использовать однобуквенные названия переменных, хотя в таком простом коде это можно оставить

tail = n;
if (oldTail == null) head = n; else oldTail.next = n;
}
private void removeNode(Node n) {
Copy link

Choose a reason for hiding this comment

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

Замечания аналогичные предыдущему методу

}
private List<Task> getTasks() {
List<Task> list = new ArrayList<>();
for (Node n = head; n != null; n = n.next) list.add(n.data);
Copy link

Choose a reason for hiding this comment

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

Аналогично про фигурные скобки

Copy link

@LexLippi LexLippi left a comment

Choose a reason for hiding this comment

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

Привет!

Отличная работа!

Желаю удачи в следующих спринтах!

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