-
Notifications
You must be signed in to change notification settings - Fork 0
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
Спринт 8 #4
Спринт 8 #4
Conversation
список приоритетных задач, переделать тесты
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добрый вечер, Алексей!
Хорошая работа, от меня всего пара уточнений.
} | ||
if (startTime != null) { | ||
epic.setStartTime(startTime); | ||
epic.setEndTime(epic.getStartTime().plus(duration)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Здесь немного не так. По техническому заданию:
А вот с классом Epic нужно поработать дополнительно. Продолжительность эпика — сумма продолжительностей всех его подзадач. Время начала — дата старта самой ранней подзадачи,
а время завершения — время окончания самой поздней из задач.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Поправил, добавил тесты на эти три условия
public List<Task> getPrioritizedTasks() { | ||
return Stream.concat(getTasks().stream(), getSubTasks().stream()) | ||
.filter(x -> x.getStartTime() == null) | ||
.sorted(Task::compareToStartTimeAsc) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Сортировать задачи лучше при добавлении в этот список. По техническому заданию:
Предполагается, что пользователь будет часто запрашивать этот список, поэтому подберите подходящую структуру данных для хранения. Сложность получения должна быть уменьшена ... до O(n).
То есть метод должен быть приблизительно таким:
@Override
public List<Task> getPrioritizedTasks() {
return new ArrayList<>(prioritizedTasks);
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправил, добавил в интерфейс getPrioritizedTasks и тест для него
tasks.put(task.id, task); | ||
addTreeOfTasksAndSubTasks(task); | ||
return task.id; | ||
} | ||
|
||
@Override | ||
public int addSubTask(SubTask subtask) { | ||
subTasks.put(subtask.id, subtask); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Перед добавлением подзадачи также нужно проверить нет ли пересечения с другими задачами и подзадачами, уже добавленными в отсортированный список.
if (isTaskCrossesSavedTasks(subtask)) {
.................
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добавил проверку
return epic.id; | ||
} | ||
|
||
@Override | ||
public void updateTask(Task task) { | ||
updateTreeOfTasksAndSubTasks(task); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
У обновляемой задачи могли измениться и время начала и продолжительность, поэтому здесь тоже нужно проверить на пересечение по времени.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добавил проверку для обновлений, дополнил тесты
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добрый вечер, Алексей!
Всё в порядке, замечаний нет.
Работа принята.
Добавить продолжительность и дату старта задач, список приоритетных задач, переделать тесты