Доброго времени суток. Такая ситуация: есть некое устройство в игре, которое может потреблять некую мощность и генератор, который может ее производить. Уровень потребления может меняться от min до max и 0 (выкл), есть управление из GUI, например.
Устройству поступила команда работать на 20 МВт, а доступно от генератора только 15МВт. Есть два варианта действий:
- Устройство выбросит исключение. Значит, условный интерфейс должен самостоятельно проверять достаток энергии или по крайней мере "спросить" у распределителя мощности, а хватит ли, и если да, то дать юзеру сдвинуть ползунок подальше.
- Устройство автоматически избежит перегрузки и поставит себе максимально возможное питание, в данном случае 15МВт, ну и какое-нибудь событие PowerLevelChanged вызовет, конечно. GUI по этому событию обновится, в результате сдвинуть ползунок дальше игрок не сможет - его будет отбрасывать назад.
Аналогично и с вкл/выкл - можно просто не включать, если доступная мощность меньше min, а можно выкинуть исключение "чего включаешь, мощи нет".
В проекте возникла путаница этих двух подходов - в одном месте кидаю исключение, в другом "отмалчиваюсь" - а как лучше с точки зрения принципов проектирования и т.д.? Сам склоняюсь ко второму подходу, т.к. он кажется проще и лаконичнее (например, GUI будет "самобалансироваться" без всяких дополнительных проверок с его стороны), но стало интересно, как люди делают.