Сегодня я режу зубы на мероприятиях и делегатах, и для этого я играю с идеями индикаторов опыта, тех индикаторов прогресса из игр. Но у меня есть вопрос о лучшем способе решения моей проблемы - это может быть так же просто, как плохой дизайн. Позвольте мне предоставить вам некоторые детали.
Я смоделировал свою идею с помощью класса ExperienceBar.
Содержит свойства:
- int StartValue
- int CurrentValue
- int EndValue
и метод
UpdateBar добавляет параметр в CurrentValue, а затем проверяет, достигло ли оно EndValue. Если оно превышает сумму, EndValue увеличивается, и сумма продолжается. Обратите внимание, что изначально, на мой взгляд, он не связан с эффектами достижения максимально возможной суммы, просто он увеличивает конечное значение и значение StartValue сбрасывается в ноль.
Другой класс с именем Player обладает свойством класса ExperienceBar.
В моей маленькой демонстрации, когда Player.ExperienceBar.UpdateBar (int) достигает EndValue, он запускает событие, которое обрабатывается классом Player. Обновляет свойство Player.Level на единицу.
Я только что понял, что могу добиться того же, просто изменив UpdateBar (int) на тип true. Этот метод может быть протестирован классом Player, и когда true, Player.Level увеличивается на единицу.
Итак, мой вопрос - как лучше всего справиться с этим довольно специфическим обстоятельством? Как общее практическое правило для подобных ситуаций: лучше обрабатывать события или лучше просто упростить тестирование операторов возврата?
PS: Я надеюсь, что объяснил это по возможности, но я могу попытаться уточнить, есть ли у кого-то проблемы. Я полагаю, что с моей идеей уже может быть некоторая избыточность, но постарайтесь не отклоняться от вопроса, пожалуйста. Я вроде о них знаю! Спасибо:)