Skip to content

The first full-fledged project is a task manager. creating own logger, trying to describe the API, creating own double-linked list, took a lot from Herbert Schildt's 10th edition. Sample of the pen

Notifications You must be signed in to change notification settings

bot68dt/java-kanban

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-kanban

Repository for homework project.

Функции com.yandex.taskmanager.service.InMemoryTaskManager:

В функциях сознательно добавлял поле типа задачи, чтобы облегчить код. Одна переменная убирает необходимость писать кейс из трёх условий на проверку типа

addTask(Object obj) -добавить простую задачу, аргумент - объект простая задача

addSubTask(int epicId, Object obj) - добавить подзадачу, epicId - Ид эпика, к которому она относится, obj - задача типа Subtask

addEpic(Object obj, ArrayList objs) - добавить эпик и список подзадач в нём. obj - задача типа Epic objs - список подзадач типа Subtask

getAllTasks() - вывод всех задач в com.yandex.taskmanager.service.InMemoryTaskManager

getTasksByType(Types type) - вывод задач по их типу: EPIC, SUBEPIC, SIMPLE

delTasksByType(Types type) - удаление всех задач выбранного типа. Считаю данный метод неконструктивным, но в условии он требуется. Считаю более эффективным и правильным удаление по ИДентификатору

getTasksById(int id) - получить список задач по заданному идентификатору

updateTask(int id, Types type, Object task) - обновление существующей задачи, аргументы - id задачи, её тип, новый объект задачи

delTaskById(int id, Types type) - удаление задачи по её id, аргументы - ид задачи и её тип

getSubsByEpicId(int id) - получение списка подзадач по Ид задачи-эпика

Далее идут 3 чисто технических функции-сокращения, которые не понадобятся для тестировщика или фронт-энд

Сhanges:

1."В методе addSubTask и других методах используется повторяющаяся логика для подсчета статусов подзадач эпика. Это можно вынести в отдельный метод (как это сделано в repeatedExpression)."

Вчера поспешил и не спрятал ещё одно выражение под шапку, сегодня поправил + добавил ещё одно небольшое repexp2, в методах, где оно используется, мог бы написать всё в 1 строку, но для читаемости кода оставил переменную.

2."Методы getAllTasks() и getTasksByType() возвращают ArrayList, что приводит к проблемам с типами. В Java следует избегать использования Object, так как это требует приведения типов и ухудшает типобезопасность. Используйте обобщенные коллекции, возвращающие конкретные типы задач:"

Понял, на будущее не буду использовать, просто у нас целую тему посветили Object.Насколько я понимаю, объект следует использовать только в переопределении методов. Так же, я сделал реализацию вывода по спискам определенных объектов, но и оставил вывод в HashMap, чтобы получить ID задач для проверок

3."Вместо изменения статуса на Status.DONE при удалении всех подзадач эпика, лучше использовать статус NEW, так как у эпика больше нет подзадач, и он может считаться новым."

Тут у меня логика немного странно сработала, я решил, раз подзадачи удалили, значит - мы их выполнили. Поменял, как Вы сказали.

4."Следует добавить проверки на null для методов, чтобы избежать ошибок выполнения"

Во всех методах постарался реализовать проверку на наличие некорректных передач аргументов. При добавлении задач не проверяю поле Description, т.к. считаю, что пользователь может оставить поле пустым, если захочет. Если это принципиально необходимо, то смогу в будущем поменять этот момент, но в задании таких тонкостей не указано, прошу не считать это ошибкой

5."В методе delEpicById, после удаления эпика, происходит удаление всех подзадач эпика, однако можно сначала удалить подзадачи, а затем сам эпик, что будет логичнее."

Полностью согласен!И это сразу укоротило код, благодарю.

ps Если Вам кажется, что я пытаюсь откуда-то всё списать, то это не так, я просто пытаюсь въехать и читаю про разные базовые функции, но в пределах прохождения тем, сильно не лезу

About

The first full-fledged project is a task manager. creating own logger, trying to describe the API, creating own double-linked list, took a lot from Herbert Schildt's 10th edition. Sample of the pen

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published