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