Перейти к содержанию

Проект среднего уровня: менеджер задач в командной строке

Начало урока

Проект среднего уровня: менеджер задач в командной строке

Итоговый проект: собираем генераторы списков, классы, файлы, исключения и тесты в одно настоящее консольное приложение

Главная идея: Всё, что вы изучили на курсе, было отдельным инструментом. Настоящая программа - это много инструментов, работающих вместе. Здесь мы строим менеджер задач, который запускается из терминала: он хранит дела в файле, позволяет добавлять и завершать их, фильтрует их с помощью генераторов, описывает каждый пункт как класс, переживает плохой ввод благодаря исключениям и защищён автоматическими тестами.
К концу вы сможете:
  • разбить приложение на слои (данные, логика, хранилище, интерфейс), каждый из которых делает одну работу,
  • описать пункт списка дел как класс Task с методами to_dict/from_dict,
  • запрашивать и фильтровать данные с помощью генераторов списков, генераторных выражений и словарей,
  • сохранять данные в JSON-файл и восстанавливаться после отсутствующего или испорченного файла с помощью исключений,
  • управлять всем этим из командной строки и закрепить поведение модульными тестами.

1. Архитектура: четыре слоя, одно приложение

Частая ошибка новичка - впихнуть всю программу в один длинный скрипт. Профессионалы вместо этого делят её на слои, где у каждого слоя одна обязанность и он общается только с соседями. У нашего менеджера задач их четыре:

  • Данные - класс Task: чем является одно дело.
  • Логика - класс TaskManager: добавить, завершить, отфильтровать, посчитать. Он ничего не знает о файлах и экране.
  • Хранилище - save / load: превращают задачи в JSON на диске и обратно. Оно ничего не знает о командной строке.
  • Интерфейс - CLI (main): читает команду пользователя из argv, вызывает логику, печатает результат.
CLI reads argv TaskManager the logic Storage save / load tasks.json on disk call list save load
Командная строка вызывает логику, логика просит хранилище сохранить или загрузить, а tasks.json хранит данные между запусками.

Зачем это? Потому что каждый слой можно понять, изменить и протестировать отдельно. Вы могли бы заменить JSON-файл базой данных, а CLI - веб-страницей, не трогая логику. Это разделение - самая важная идея всего проекта.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя