← маршрут 1–48 · личный кабинет

Занятие 45. Рефакторинг финальной версии

45 минут учебной работыиндивидуальнотекстовая RPG

Перед началом

Что открыть: Открой рабочую версию проекта после занятия 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 об ошибке. Сначала прочитай его последнюю строку и найди номер строки своего файла. Повтори только тот маленький шаг, на котором возникла ошибка; после исправления снова запусти тот же проверочный случай. Если используешь ИИ, сохрани собственную попытку и попроси одну подсказку, а не готовое решение.