Режимы интерфейса
Коротко Режим (mode) возникает, когда одно и то же действие приводит к разным результатам в зависимости от состояния, на которое пользователь не обращает внимания. Джеф Раскин даёт точное определение, показывает, почему ни обратная связь, ни опыт не защищают от модальных ошибок, и предлагает ясные правила. Самое полезное из них: подписывайте переключатели по состоянию, а не по действию.
По материалам: Дж. Раскин, «Интерфейс: новые направления в проектировании компьютерных систем», гл. 3, разд. 3.1–3.2.1.
На этой странице
Главные идеи#
Жесты и формирование модулей#
Жестом (gesture) Раскин называет последовательность действий, которая после начала выполняется автоматически. Для человека, который хорошо печатает, набор короткого слова — один жест; для новичка — несколько. Объединение шагов в одну ментальную единицу называется формированием модуля (chunking).
Что такое режим#
В первом приближении интерфейс остаётся в одном режиме, пока данный жест сохраняет одно и то же значение. Если тот же жест теперь означает что-то другое, вы в другом режиме. Затем Раскин уточняет определение через внимание. Жест модален, когда:
- состояние, от которого зависит его результат, находится не там, где внимание пользователя, и
- это состояние может заставить один и тот же жест вызывать разные действия.
Обратной связи недостаточно#
Дональд Норман объяснял модальные ошибки недостатком обратной связи о состоянии системы. Раскин не согласен: даже чёткий индикатор не помогает, если он находится вне локуса внимания пользователя. Его пример — CAD-программа, в которой форма курсора показывала режим рисования, причём ровно там, куда смотрел пользователь. И всё же пользователь, для которого выделение объектов стало автоматическим, годами не замечал этой смены.
Опыт не защищает#
Новички совершают модальные ошибки, потому что не знают режима; эксперты — потому что действие стало автоматическим. Пример Раскина: в большинстве программ одно сочетание клавиш создаёт новый документ, а в одной почтовой программе новое письмо создаётся другим сочетанием. Новички (из-за ложного обобщения) и эксперты (по привычке) совершают одну и ту же ошибку.
Измерение модальности#
Раскин предлагает степень модальности от 0 (полностью модальный интерфейс) до 1 (полностью немодальный). Каждый жест относят к модальным или немодальным и взвешивают по частоте использования. Так ощущение «здесь что-то модальное» превращается в число, по которому можно сравнивать варианты. Тонкость: клавиша Backspace формально модальна, потому что удаляет то, что было набрано последним. Но проблем она не вызывает: то, что она удаляет, находится во внимании пользователя.
Три способа предотвратить модальные ошибки#
Раскин оценивает три средства, предложенные Норманом:
- Не иметь режимов. Это единственный способ полностью устранить модальные ошибки.
- Сделать режимы чётко различимыми. Часто не срабатывает, что и показывает случай с CAD-программой.
- Не использовать одну и ту же команду в разных режимах. Ошибок от этого меньше не становится, но меньше становится ущерб от них.
Lock и Unlock: состояние, а не действие#
Кнопка с надписью «Lock» («Заблокировать»), которая после нажатия меняет надпись на «Unlock» («Разблокировать»), путает многих пользователей. Они читают надпись как текущее состояние, а не как действие. Раскин предлагает сменить сам элемент управления: флажок или набор вариантов, подписанных не глаголами, а словами, которые описывают состояние объекта («Заблокировано» / «Разблокировано»). Одиночный переключатель допустим, только когда состояние, которым он управляет, видно и находится во внимании пользователя или в его кратковременной памяти. В остальных случаях показывайте все варианты явно.
Как применять#
- Проведите инвентаризацию режимов. Для каждого экрана перечислите состояния, в которых один и тот же щелчок, клавиша или сканирование приводит к разному: просмотр и редактирование, администратор и обычный пользователь, пакетная и поштучная обработка.
- Оспорьте каждый режим. Спросите, можно ли его убрать, — например, разрешить редактировать поле на месте вместо переключения в режим редактирования.
- Смоделируйте необходимые режимы. Постройте модель состояний интерфейса и опишите, что делает каждый жест в каждом состоянии.
- Подписывайте переключатели по состоянию. Запишите это в критерии приёмки: переключатель называет текущее состояние (прилагательным или причастием), а не действие (глаголом).
- Сохраняйте сочетания клавиш согласованными с другими инструментами, которые пользователи уже знают.
Чек-лист для ревью#
- Ни один жест не означает разного в разных скрытых состояниях.
- Оставшиеся режимы перечислены, обоснованы и видны там, куда смотрит пользователь.
- Переключатели описывают состояние («Заблокировано»), а не действие («Заблокировать»).
- Разрушительные команды не повторяются в разных режимах.
- Сочетания клавиш соответствуют соглашениям, знакомым пользователям по другим программам.
Пример#
В «Мастерской», вымышленной сети веломастерских, на планшете механиков у каждого ремонтного заказа есть переключатель «Редактировать». В режиме редактирования сканирование штрихкода запчасти добавляет её в заказ; в режиме просмотра то же сканирование открывает карточку запчасти в каталоге. Механики в спешке сканируют не в том режиме, и запчасти пропадают из счетов.
Аналитик переписывает требование. Сканирование всегда добавляет запчасть в открытый заказ с возможностью отмены, а для просмотра запчасти появляется отдельная кнопка. Кнопка «Заблокировать заказ», которая переключалась на «Разблокировать заказ», превращается во флажок с подписью «Заказ заблокирован для изменений».
Источники и что почитать#
- J. Raskin. The Humane Interface: New Directions for Designing Interactive Systems. Addison-Wesley, 2000. Рус. изд.: Дж. Раскин. Интерфейс: новые направления в проектировании компьютерных систем. СПб.: Символ-Плюс. Гл. 3 (разд. 3.1–3.2.1).