Skip to content

almazsr/OTUS-exceptions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Файловый менеджер задач

Простое приложение командной строки для ведения списка задач, которое ведет все задачи в файле todo.txt (в папке с приложением).

У приложения есть 3 команды:

  • add - добавить задачу указав название и дату
  • all - вывести все задачи
  • today - вывесть задачи на сегодня

Все функции уже написаны. И приложение уже даже работает. Но к сожалению, приложение работает только с правильными данными и падает при малейших нештатных ситуациях. В связи с этим надо переделать приложение, используя блок-схему для обработки и выбрасывания исключений: https://miro.com/app/board/o9J_l_DKWkw=/

Контрактное программирование в классе ToDoTask

Давайте сделаем ToDoTask в контрактном стиле. Этот класс не взаимодействует напрямую с пользователем.

Любые переданные на вход в конструктор ToDoTask неправильные данные - исключительная ситуация. Ограничения на данные у него такие:

  • Date в диапазоне между 2000/01/01 и 2100/01/01.
  • Name не пустой.

У него есть метод Parse, который парсит входную строку типа "{Date} {Name}" и создает новый объект ToDoTask.

Также у него есть безопасная версия TryParse, которая в отличие от Parse не кидает исключение, а возвращает false, если строка невалидная.

Совет: При выбрасывании исключений старайтесь передавать понятный текст ошибки.

Слой хранения и вывода задач

Если файл не найден при добавлении новой задачи, пользователю предлагается сначала создать новый и добавить задачу в него.

Если файл не найден при выводе задач (today, all), то выводиться сообщение: "Файла с задачами пока нет, сначала создайте задачу".

Если при выводе задач, какие-то строки из файла не получилось спарсить, то эти строки выводятся вначале с предупредительным сообщением, а лишь потом все валидные задачи.

Все необработанные исключения пойманные в глобальном обработчике пишуться в log.txt.

Слой взаимодействующий с пользователем

Команда add принимает на вход название 2-м аргументом и дату 3-м аргументом. Если аргументы невалидные, то выводиться соответствующее сообщение.

Приложение проверяет количество аргументов для конкретной команды.

Если была передана неверная команда, то пользователю выводится соответствующее сообщение.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages