Глава 23 · Приложение

Дополнительная практика: шесть мини-проектов для GitHub

Повторите полный путь разработки самостоятельно: от постановки задачи и кода до тестов, коммита и Pull Request.

GitHubGitHub-практика — тот же рабочий процесс, что и в SafeSort, самостоятельно

Основной проект главы — SafeSort — показывает полный цикл разработки один раз подробно. В дополнительной практике этот же цикл нужно повторить самостоятельно на шести небольших проектах.

Цель здесь не только написать работающий код. Каждый проект необходимо оформить как часть GitHub-портфолио: определить задачу, привести код в порядок, добавить тесты и документацию, выполнить работу в отдельной ветке и завершить её через Pull Request.

Шесть проектов

ПроектЧто практикует
A. Калькулятор с Tkinterбезопасный разбор выражений без eval(), разделение логики и интерфейса
B. Генератор случайных историйдетерминированный генератор случайных чисел, тестируемая случайность
C. «Камень, ножницы, бумага»таблица правил вместо цепочки условий, проверка всех девяти комбинаций
D. Отскакивающие мячи с Pygameдвижение по времени кадра, независимость от FPS
E. Преобразование температурычистые функции конвертации, проверка ниже абсолютного нуля
F. Приложение «Заметки»файловые операции отдельно от интерфейса, обработка ошибок чтения

Один репозиторий для всех шести проектов

python-mini-projects — эталонный репозиторий курса: он показывает ожидаемую структуру и рабочий процесс, но учебная работа выполняется не прямо в нём. Практика — в собственной копии:

Cartesian Schoolэталонный репозиторий— структура и примерВаш аккаунтсобственныйрепозиторий или forkэтого же имениШесть проектовIssue → ветка → код →тесты → PR — в вашемрепозитории
Практика выполняется в собственном репозитории или fork, не прямо в репозитории школы

Один репозиторий на все шесть проектов, а не шесть отдельных:

Один репозиторийШесть репозиториев
Один и тот же рабочий процесс с Issue, веткой и Pull Request повторяется шесть раз в одном местеТот же процесс нужно настраивать заново для каждого репозитория
Прогресс по всем проектам виден сразу в одном списке коммитов и PRПрогресс разбросан по шести отдельным историям
На странице профиля — один репозиторий с шестью проектами внутриНа странице профиля — шесть отдельных репозиториев, каждый на одну небольшую задачу

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

Рабочий процесс для каждого проекта

Issueкраткое описаниезадачи и критериевготовностиВеткаfeat/название-проектаКод и тестыреализация плюс хотябы одинавтоматический тестКоммитgit diff проверен,изменение осмысленноеPull Requestоткрыт, просмотрен,проверки пройдены
Один и тот же процесс повторяется для каждого из шести проектов
Портфолио измеряется не количеством репозиториев
Понятный README, работающий код, разумная структура, тесты и читаемая история коммитов производят куда лучшее впечатление, чем десяток пустых репозиториев с одним файлом в каждом. Шесть проектов в одном аккуратном репозитории — сильнее, чем шесть заброшенных отдельных.

Итоговый список