← маршрут 1–48 · личный кабинет
Занятие 45. Рефакторинг финальной версии
Перед началом
Что открыть: Открой рабочую версию проекта после занятия 44. Демонстрационный lesson-45.py используй как отдельный маленький пример.
Исходные данные: Начни с значений из минимального примера. Творческие изменения выполняй только после базовой проверки.
Что нужно понять
Занятие 45 посвящено теме «Рефакторинг финальной версии». Здесь этот навык применяется не как отдельное упражнение, а как часть общей текстовой RPG. Архитектурный долг — участок, который работает, но усложняет изменение кода: например повтор одной логики в нескольких местах. Регрессионная проверка — повтор старого сценария после изменения, чтобы убедиться, что поведение не сломалось.
Минимальный пример
def can_open_door(state):
return state["has_key"]
def open_door(state):
if not can_open_door(state):
return "Заперто"
state["door_open"]=True
return "Открыто"
state={"has_key":True,"door_open":False}
print(open_door(state),state)Скачать демонстрационный .py-файл
Практика
Выбери один конкретный повторяющийся участок, вынеси правило в небольшую функцию и повтори тот же старый сценарий.
Связь с проектом: После базового упражнения перенеси изученный приём в рабочую версию проекта и сохрани версию после занятия 45.
Критерий проверки
Поведение старых сценариев не изменилось; функции имеют одну ответственность; существующие тесты продолжают проходить.
Как проверить: Сравни один и тот же вход и итог до/после. Изменение структуры не должно менять игровой результат.
Что сдать
Сдай рабочую версию проекта после занятия 45 и короткий протокол проверки: входные данные → ожидалось → получилось.
Если нужна поддержка: Если задача не запускается целиком, выполни один шаг отдельно и объясни, что должно измениться до следующего шага.
Типичное затруднение
Не меняй одновременно баланс, сюжет и архитектуру. Рефакторинг сначала должен сохранить поведение.
Домашняя часть
Исправь один оставшийся архитектурный долг и зафиксируй, какой тест защищает от регрессии.
После базы: Сравни число глобальных переменных до и после рефакторинга.
Если появилась ошибка
Traceback — сообщение Python об ошибке. Сначала прочитай его последнюю строку и найди номер строки своего файла. Повтори только тот маленький шаг, на котором возникла ошибка; после исправления снова запусти тот же проверочный случай. Если используешь ИИ, сохрани собственную попытку и попроси одну подсказку, а не готовое решение.