Избыточность интерфейса 21.10.2016

Представьте, вы зашли в лифт. Что дальше? Нужно выбрать нужный этаж? Нет, не угадали. Сначала нужно дать команду лифту закрыть двери, нажав соответствующую кнопку. Теперь — команду проверить, является ли ваш вес допустимым. Вы спросите, ведь лифт обычно и двери не закрывает если есть перевес? Нормальный лифт — да, а этот, обладающий интерфейсом с возможностью тонкой настройки так не может, ведь между вызовами проверить вес и закрыть двери, в лифт может пробраться еще кто-нибудь. Поэтому, сначала нужно закрыть двери и только потом взвешиваться. Ну, теперь то можно выбрать этаж? Не тут то было, нужно еще проверить вас на адекватность — заставить выбрать режим работы лифта “ВВЕРХ/ВНИЗ”. Только теперь можно выбрать этаж. Почему никуда не едем? Кнопку “ЕХАТЬ” забыли нажать. Теперь осталось не забыть открыть двери до того, как лифт уедет к другому клиенту — благо на вашем этаже он остановится автоматом.

Очевидно, что если вы перепутаете последовательность нажатия кнопок, лифт никуда не поедет и нужно будет все начинать с начала. Для этого кстати в лифте есть специальная кнопка “РЕСЕТ”, нажимать которую, кстати, можно только если лифт находится не в состоянии “ЕДЕТ” или “ДОЕХАЛ” (состояние лифта можно увидеть на маленьком экранчике предварительно нажав кнопку “ПРОВЕРИТЬ СОСТОЯНИЕ”).

Знакома ситуация? Лифт, конечно, система сложная,… но не для пользователя.

Очень часто мы строим педальные шарманки с интерфейсом управления боинга только потому, что нам кажется, что если наша шарманка сложная как боинг внутри и это не будет понятно снаружи, то время потрачено впустую.

Так вот, если последовательность каких то операций, которые выполняет ваш класс, не имеет значения для клиента вашего кода, то он не должен о ней знать — получите от него необходимую информацию (номер этажа) и сделайте то, чего от вас хотели.

by 21.10.2016