Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
«Об интерфейсе», Алан Купер (2010).docx
Скачиваний:
1
Добавлен:
09.01.2020
Размер:
2.32 Mб
Скачать

Глава 12. Проектирование хорошего поведения

К акие действия запоминать?

Следует запоминать все, что делает пользователь. На жестких дисках полно свободного места - и память вашего приложения найдет этому месту достойное применение. Мы привыкли считать, что программы требуют неоправданно много места на диске, потому что большое приложение, как правило, занимает порядка 200 Мбайт. Это типично для программы, но нетипично для данных пользователя. Если текстовый редактор будет сохранять один килобайт информации о поведении пользователя после каждого запуска, это не так уж много. Скажем, вы запускаете текстовый процессор 10 раз в течение рабочего дня. В году примерно 200 рабочих дней, так что получается 2000 запусков программы в год. Потребление места на диске составит 2 Мбайта - и это расчет с запасом на целый год! Обои на рабочем столе занимают на диске немногим меньше места.

Расположение файлов

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

Выводы, сделанные программой

Программа должна запоминать не только очевидные факты, но и выводы, которые можно сделать на их основании. Например, если программа запоминает количество измененных байтов при каждом открытии файла, она будет в состоянии помочь пользователю, выполняя некоторые проверки на разумность действий. Предположим, для некоторого файла исторические значения счетчика измененных байтов составляют 126, 94, 43, 74, 81, 70, 110 и 92. Если пользователь в следующий раз изменит 100 байтов, то в этом не будет ничего необычного. Если же вдруг счетчик зашкалит за 5000, то программа должна заподозрить что-то неладное. Хотя есть вероятность, что пользователь нечаянно сделал то, о чем впоследствии пожалеет, она все-таки невелика, поэтому беспокоить его диалоговым окном подтверждения изменений не стоит. Тем не менее со стороны программы будет весьма разумно на всякий случай сохранить помеченную копию файла, в которой эти 5000 байтов еще не изменены. Скорее всего, программе не придется хранить эту копию после следующего обращения пользователя к данному файлу, поскольку пользователь с большой вероятностью заметит ошибку сразу и потребует откатить изменения немедленно.

Проектирование интеллектуальных продуктов 311

М ежсеансная отмена

Большинство приложений очищают стек отменяемых действий, как только пользователь закрывает документ или само приложение. Это недальновидный шаг. Приложение должно записывать стек изменений в специальный файл. Когда пользователь снова откроет свой файл, приложение загрузит стек отмены со всеми действиями, выполненными в течение прошлого сеанса, даже если он был неделю назад!

Ранее введенные данные

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

Если приложение запоминает, что ввел пользователь, и на основании этой информации выполняет проверку его действий впоследствии, то она может отфильтровать ошибочные данные. Такая возможность существует в современных веб-браузерах, таких как Internet Explorer и Firefox. Именованные поля данных фиксируют ранее введенную информацию, так что пользователь впоследствии имеет возможность выбирать значения из списка. Если пользователя заботят соображения безопасности, функцию можно отключить, однако для большинства людей она оказывается полезной, поскольку экономит время и сокращает количество ошибок набора.

Манипуляции с файлом третьими приложениями

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

Реализация памяти в ваших приложениях

Когда разработчики признают всю мощь принципа связности задач, процесс создания программного продукта претерпевает значительные изменения. Проектировщики обнаруживают, что их мышление при-

312 Глава 12. Проектирование хорошего поведения

о бретает новое качество. Традиционный подход с обязательной выдачей диалоговых окон заменяется обдуманным процессом, в котором проектировщик задается более тонкими вопросами. Как много информации должно запоминать приложение? Что именно оно должна запоминать? Должно ли оно помнить больше, чем просто последние настройки? Что понимать под изменением в поведении пользователя? Проектировщики рисуют в своем воображении различные ситуации, например: пользователь принимает один и тот же формат даты 50 раз подряд, а затем один раз вручную вводит дату в другом формате. Какой формат программа должна использовать в следующий раз: тот, который использовался 50 раз, или самый последний? Сколько раз должен быть указан формат, чтобы стать форматом по умолчанию? Программа не должна спрашивать об этом у пользователя лишь потому, что здесь имеется неоднозначность. Она должна по своей инициативе принять разумное решение. Если оно окажется ошибочным, пользователь будет вправе отменить его.

В следующих разделах разъясняются некоторые типичные шаблоны принятия решений пользователем. Это поможет нам найти ответы на сложные вопросы, относящиеся к связности задач.

Сокращение множества решений

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

Например, если вы вчера ходили за покупками в некоторый универсам, это еще не означает, что вы ходите только в него. Однако когда вам в следующий раз потребуются бакалейные товары, вы, вполне вероятно, пойдете туда же. Аналогично, даже если меню в вашем любимом китайском ресторанчике содержит 250 блюд, весьма вероятно, что вы выберете одно блюдо из пяти-шести любимых. Когда люди едут домой с работы, они выбирают один из немногих маршрутов, в зависимости от дорожной обстановки. Компьютеры, конечно, не переутомятся от того, что запомнят четыре или пять вариантов.

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

Сокращение множества решений наводит нас на мысль, что информация о предпочтениях пользователя, которую должна запоминать про-

Проектирование интеллектуальных продуктов 313

г рамма, неким образом группируется. Не бывает какого-то одного правильного варианта - они все правильные. Приложение должно находить более тонкие «зацепки», чтобы определить, какое решение из небольшого множества подходит в данном случае. Например, если вы применяете программу оформления чеков для оплаты своих счетов, приложение может быстро сообразить, что только два или три счета используются регулярно. Но как ей определить по чеку, к какому счету он относится? Если программа запомнит, какие получатели и суммы соответствуют тому или иному счету, ей будет легко принимать решение. Вы платите за квартиру каждый раз одну и ту же сумму! То же самое относится к выплате кредита за машину. Сумма, которую вы платите за электричество, может меняться, но она, вероятно, будет отличаться от предыдущей не более чем на 10-20%. Эти сведения могут быть использованы программой, чтобы понять, что происходит, и помочь пользователю.

Пороги предпочтений

Решения, принимаемые людьми, можно поделить на две категории: важные и неважные. Любая деятельность потенциально включает в себя сотни решений, но только некоторые из них важны. Все остальные несущественны. Программные интерфейсы могут воспользоваться идеей порогов предпочтений для облегчения работы пользователя.

Когда вы приняли решение купить автомобиль, вам все равно, где брать кредит, до тех пор пока условия примерно равные. Когда вы набрали продукты в универсаме, вам все равно, через какую кассу платить. Когда вы решили покататься на американских горках, вам все равно, в какую тележку вас посадят.

Пороги предпочтений являются ориентиром при проектировании пользовательского интерфейса. Они демонстрируют, что вовсе не обязательно расспрашивать пользователя о мелких шагах процедуры. Когда пользователь просит распечатать документ, не нужно задавать ему вопросы относительно количества копий и ориентации страницы. В первый раз мы можем сделать какие-то предположения, а затем использовать их повторно. Если пользователь захочет изменить настройки печати, он всегда сможет вызвать соответствующее диалоговое окно.

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

314

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]