Сравнение: как это будет выглядеть?

Помимо того, что спаренная функция Отмена/Повтор оказывает надеж' ную поддержку сомневающимся в себе пользователям, она является удобным инструментом сравнения. Предположим, что вы хотите срав' нить вид текста с рваным правым краем и выровненным правым кра' ем. Открыв документ, вы выполняете выравнивание по правому краю. Потом вы возвращаетесь к прежнему виду с помощью функции отме' ны, а затем выполняете функцию повтора, чтобы снова увидеть вырав' нивание. Получается, что переключение между отменой и повтором реализует функцию сравнения –«а что, если?». Просто так получи' лось, что эта функция представлена моделью реализации. Если бы воз' никла необходимость добавить такую функцию исходя из пользова' тельской ментальной модели, ее можно было бы представить в виде са' мостоятельного инструмента сравнения. Эта функция позволила бы пользователю неоднократно совершать то шаг вперед, то шаг назад и сравнивать состояния визуально.

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

Когда пара Отмена/Повтор используется для сравнения, она является одной функцией, а не двумя. Одна ее половина говорит: «Применить данное изменение», а другая: «Отменить данное изменение». Кнопка Сравнить могла бы более точно представить это действие пользователю. Хотя мы обсуждали этот инструмент на примере текстового редакто' ра, функция сравнения была бы очень полезна в графическом редакто' ре или программе для рисования, где пользователь последовательно трансформирует изображения. Возможность легко и быстро сравни' вать трансформированное изображение с исходным вариантом станет значительным подспорьем для компьютерного художника. Во многих продуктах подобная функциональность реализуется посредством ми' ниатюр изображений.

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

не умаляет ее достоинств, поскольку люди обычно помногу работают с графическими редакторами. Для подобных программ забота об опыт' ном пользователе представляется разумной.

Специфическая отмена

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

Логика подсказывает, что второй случай представляет собой опреде' ленную проблему. Однако наблюдения показывают, что эта проблема возникает у пользователей редко. Такая изолированная модифици' рующая отмена (невозможно подобрать термин попроще) естественна и проста в использовании, поскольку все происходит на глазах: поль' зователь видит, что именно будет удалено. Клавиша Backspace является классическим примером модифицирующей отмены. Она восстанавли' вает данные выборочно, игнорируя промежуточные операции. И все же, если вы представите себе механизм отмены с неким указателем, который можно передвигать, выбирая отменяемое действие, вам, ве' роятно, покажется, что такая схема явно неуправляема и вызовет не' понимание у типичного пользователя. Опыт, однако, говорит нам, что при использовании клавиши Backspace ничего подобного не происхо' дит. Она все делает как надо, потому что ее поведение соответствует ментальной модели курсора, которой придерживаются пользователи. Поскольку курсор является источником новых символов, вполне ра' зумно, если он будет и центром удаления символов.

Обладая этим знанием, мы можем создать различные типы модифици' рующей отмены, например функцию отмены форматирования, кото' рая отменяла бы лишь команды форматирования, и другие действия специфической отмены. Если пользователь набрал некоторый текст, преобразовал начертание букв в курсивное, набрал дополнительный текст, увеличил отступ абзаца, набрал еще текст, а затем вызвал функ' цию отмены форматирования, то будет отменено только увеличение абзацного отступа. Следующий вызов функции отмены форматирова' ния «снимет» курсив. Однако ни один из вызовов этой функции не по' влияет на содержание набранного текста.

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

Инструментами закраски мы здесь называем все инструменты рисова' ния (карандаши, перья, заливки, аэрозоли, кисти) и все инструменты для создания графических примитивов (прямоугольники, линии, эл' липсы, стрелки). Трансформации – это все, что связано с манипулиро' ванием изображением: сдвиг, поворот, резкость, оттенок, контраст' ность, толщина линии. Инструменты копирования и вставки включа' ют в себя лассо, прямоугольное и овальное выделение, клонирование, перетаскивание и прочие средства изменения положения объекта. В от' личие от клавиши Backspace, примененной в отношении текста, отмена функции закраски в графическом редакторе будет выполняться по вре' менно~му признаку независимо от того, какой объект выделен. Иными словами, в первую очередь будет отменена последняя функция закрас' ки независимо от текущего выделения. В тексте естественным поряд' ком следования данных является направление от левой верхней точки к правой нижней. Удаление данных в противоположном направлении является сильной и естественной ментальной моделью. При рисовании подобное соглашение отсутствует, так что любой порядок удаления, кроме порядка, обратного вводу, только запутает пользователя.

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

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

Буферы удаленных данных

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

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

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

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

Версии и откат

Иногда у пользователей возникает желание вернуться на достаточно большое расстояние, но при этом мелкие промежуточные действия не являются значимыми. Потребность в модифицирующей отмене остает' ся, но в большинстве случаев нет необходимости различать отдельные составляющие действий для операций более давних, чем несколько по' следних. Создание версий, обсуждаемое более подробно в главе 17, сво' дится к созданию копии всего документа – подобно моментальному слепку реальности, создаваемому фотоаппаратом. Поскольку создание версий затрагивает весь документ в целом, оно обычно реализуется че' рез прямое обращение к файловой системе. Самая существенная раз' ница между созданием версий и прочими механизмами отмены заклю' чается в том, что пользователь должен явным образом запросить соз' дание версии – «моментального снимка» или копии документа. После этого он может спокойно продолжать работать с оригиналом. Если он впоследствии решит, что внесенные изменения нежелательны, то смо' жет вернуться к сохраненной копии – предыдущей версии документа.

Существует множество инструментов для программистов, поддержи' вающих концепцию промежуточных версий, но за пределами мира разработчиков она до недавнего времени не была известна. Продукт Writeboard (37signals) автоматически создает версии документа, над которым ведется совместная работа, позволяя пользователям сравни' вать версии и, разумеется, возвращаться к любой из существующих (рис. 16.2).

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

 
  Сравнение: как это будет выглядеть? - student2.ru

Рис. 16.2. Продукт Writeboard компании 37signals позволяет нескольким людям работать над одним документом. Writeboard создает новую версию всякий раз, когда пользователь сохраняет внесенные в документ изменения, и позволяет пользователям сравнивать различные версии. Это может быть весьма полезно, поскольку совместная деятельность ведется без риска потерять проделанную любым из участников работу

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

Замораживание

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

Такой подход более уместен при работе с графикой, чем с текстом. Он напоминает процесс напыления фиксажа: то, что было нарисовано до этого, останется неизменным, но рисовать поверх фиксажа можно. Изображения, размещенные на экране, блокируются и не подлежат редактированию. В то же время новые изображения могут быть сво' бодно наложены на старые. Приложение Corel Painter реализует та' кую возможность в командах Wet Paint и Dry Paint.

Необратимые действия

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

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

Не пожалейте время на изучение своего приложения и попытайтесь найти обратимые действия, для которых не реализована отмена. Воз' можно, вы будете удивлены их количеством.


Наши рекомендации