Событие запускает определённую последовательность
Кнопка сообщает приложению о нажатии через событие Click. В его обработчике размещают действия, которые должны произойти после этого события. Для счётчика действие состоит из двух частей: сначала увеличить сохранённое число, затем показать новое значение. Если поменять их местами, экран может отображать предыдущий результат. Названия блоков помогают собрать схему, но не заменяют понимания порядка. Для проверки полезно пройти обработчик сверху вниз, записывая изменения после каждого действия.
Переменная хранит, надпись показывает
В простом примере глобальная переменная count хранит количество нажатий. Она доступна обработчикам разных кнопок во время работы приложения. Компонент Label отображает текст через свойство Text. Можно изменить этот текст, не меняя count, и именно тогда возникает рассогласование. Если count равен двум, а Label показывает ноль, следующее увеличение count даст три. Приложение выполняет заданную логику, хотя результат противоречит ожиданию человека. Ошибка находится в связи между состоянием и отображением, а не в арифметическом сложении.
Сброс должен восстанавливать согласованное состояние
Обработчик правильного сброса сначала присваивает count ноль, затем обновляет Label из этого значения. После каждого завершённого события удобно требовать одно правило: на экране показано текущее значение счётчика. Это правило помогает проверять не только одиночное нажатие, но и цепочки событий. При запуске также задают начальное значение и соответствующий текст. Глобальная переменная сама по себе не является постоянным хранилищем между запусками; сохранение данных представляет отдельную задачу. Для учебного счётчика достаточно явно договориться о начале с нуля.
Попробуйте на практике
Пройдите работу двух вариантов счётчика на бумаге. Устанавливать приложение или создавать учётную запись не нужно: проверяется логика событий.
- Сделайте два столбца: count и текст Label. В начальной строке укажите ноль в обоих. Опишите кнопку прибавления: увеличить count на единицу, затем показать count в Label.
- Выполните два нажатия прибавления, записывая оба значения после каждого. Затем смоделируйте ошибочный сброс, который меняет только текст Label на ноль.
- После такого сброса выполните ещё одно прибавление. Сравните полученную строку с ожидаемым результатом, если бы счёт действительно начался заново.
- Вернитесь к начальному состоянию. Повторите два прибавления, исправленный сброс обоих значений и ещё одно прибавление. Проверьте совпадение состояния и отображения после каждого события.
Как проверить результат. После двух прибавлений оба значения равны двум. Ошибочный сброс оставляет count равным двум, поэтому следующее нажатие показывает три. Исправленный сброс обнуляет count, и следующее нажатие показывает единицу. Проверены оба столбца, а не только экран.
Частые вопросы
Можно ли обойтись без отдельной переменной?
Для некоторых простых задач состояние можно хранить иначе, в том числе в свойстве компонента. Но выбранная схема должна быть последовательной. Здесь отдельная переменная делает различие между данными и отображением наглядным.
Почему одной проверки кнопки сброса мало?
Ноль на экране подтверждает только изменение надписи. Последующее действие показывает, какое состояние осталось внутри. Поэтому полезно проверять последовательность прибавление, сброс, прибавление, а не каждую кнопку изолированно.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.