Не важно как ее называть, если она будет делать то же самое — ничего! Об этом и пишет человек, кнопки, как бы их не назвать, которые должны отменить/прервать текущее действие, не делают этого.
Еще было бы логично, чтобы, независимо от названия, приложение имело бы обратную связь — нажал я «Отмену» (или «Прервать»), и как-то мне сообщается, что приложение закрывает коннекции, чистит временные файлы и т.д. — а то нажмешь, и гадаешь, то ли поняла, то ли нет меня программа.
Тем более что после десятка-другого секунд такого ожидания гораздо проще нажать Shift+Ctrl+Esc, да и прибить программу, которая не желает делать хоть как-то выполнить то, что я от нее попросил кнопкой «Отмена».
Неоднократно видел такое поведение кнопки «отмена», когда она становилась неактивной когда выполнялись процессы, которые прерывать нельзя и снова становилась активной при переходе к менее критичным процессам. Так что вроде бы ничего нового.
Все разумно. С технической точки зрения.
И даже с эргономической.
С психологической — все по-другому.
Многих «исчезающая», внезапно ставшая недоступной для нажатия кнопка приведет в состояние ступора — или в состояние плохо контролируемой ярости.
Мне кажется, что процессы, которые нельзя прерывать — вернейший способ вызвать в пользователе адский приступ ненависти и желание нажать на кнопку reset.
Еще хуже, когда откат делается гораздо дольше самого отменяемого процесса.
Так же очень «радует», когда кнопка отмены становится неактивна после нажатия, и ты не понимаешь, что происходит — откат, грубое прерывание, или процесс продолжается и отмена невозможна. Так что нужна информация, хотя-бы диалог после нажатия…
Особенно с системным модальным окном и жуткими тормозами. В идеале длительный процесс должен говорить «я тут примерно часиков пять поработаю, почитайте пока хабр» и прятаться в трей.
Да, только программа должна сначала сообщить о том, что для выполнения данного процесса потребуется длительное время, и только потом начинать этот процесс. А то мало ли — может пользователю через полчаса надо будет перезагрузиться в другую операционку, или он уходит и не хочет оставлять компьютер включённым.
А иначе получится как с Windows 7 (и, вроде бы, даже не только с 7) — выбрал выключение или перезагрузку, и тут на тебе, обновления на 15 минут. И такую систему совершенно не беспокоит, что у тебя могут быть другие планы (вставить жёсткий диск и скопировать файлы, потому что владелец жёсктого диска торопится, или, опять же, загрузить другую ОС и что-то срочно сделать). Вот так делать, я считаю, нельзя ни в коем случае. Я уж не говорю о том, что у Линукса (да и не только Линукса, но конкретно я им пользуюсь) как-то вполне получается обновляться, не прерывая работу пользователя, и не откладывая выключение/перезагрузку.
Я руководствуюсь простым правилом: использовать неактивный вид только у постоянно присутствующих кнопок интерфейса (мигание которых — не комильфо): например, кнопка предыдущей страницы при открытии первой страницы.
Иначе, например, в диалоговом окне можно было бы сразу раместить: ok, cancel, yes, no, retry, abort и не скрывать ненужные, а делать их неактивными.
А я руководствуюсь еще более простым правилом: Нельзя нажать? Не показывай.
Исключение лишь кнопки которые руководствуются действием пользователя — принятие лицензионных соглашений например (пока чекбокс не кликнул, кнопка неактивна).
Не, есть исключения. Представьте, что у вас тулбар и в какой-то момент нельзя нажимать какие-то кнопки. Если их не показывать, то не показывать можно двумя способами:
а) не показывать, но место они занимают по-прежнему (просто пустое) — некрасиво, т. к. может быть куча пустых областей между активными кнопками по 2-3 см пропуска;
б) не показывать и схлопывать. Это, опять же, в большинстве случае неприемлемо, т. к. невозможно будет юзеру на уровне моторики запомнить, где, какая кнопка: будет вести туда курсор, а кнопка уже сдвинулась влево или вправо.
Т. е. скрывать можно имхо только тогда, когда на этом месте точно не будет появляться другая кнопка (это путает пользователей), а такое не всегда эстетично с точки зрения внешнего вида (+ нерациональное использование пространства).
+ В некоторых специфичных интерфейсах важно показывать все кнопки (например, для определенных «тугодумных» групп), чтобы не было: «По инструкции тут должна быть эта кнопочка, но ее почему-то нет» (и приходится объяснять бабушке, что, не волнуйся, она появится когда будет нужна).
Короче, дьявол в деталях — нужно думать, а не слепо следовать :-). Только вот, чтобы нарушать правила, нужно самому хорошо их знать (а также все последствия их нарушения).
Смутно, если честно могу себе это представить. Допустим всякие кнопки удалить/копировать/етк в тоталкомандере всегда активны, даже когда ничего не выбрано, он ничего не запрещает, а если их нажать, то информирует о том что надо выбрать файл для текущего действия. И такой подход мне кажется наиболее удачным.
В многом согласен. Но я бы немного расширил варианты поведения. В случае, когда операцию нельзя отменить, но можно остановить — я пишу на кнопке «Прервать». Это слово достаточно коряво и пугающе выглядит, чтобы на него не нажимали без лишней необходимости, но, при этом, дает интерфейсную возможность прерывания длительной операции. Иногда осмысленно после нажатия (но до собственно прерывания) расписать пользователю все ужасные последствия этого действия и переспросить это ли он имел в виду. Это имеет смысл делать, только если произойдут изменения необратимые, которые не позволят ему продолжить операцию с момента прерывания.
Главное, чтобы во время «после нажатия (но до собственно прерывания)» процесс выполнения приостанавливался: сталкивался пару раз с тем, что пока я читал список «ужасных последствий прерывания» сам прерываемый процесс успевал завершиться.
Имхо, имеется в виду несуществующий, но крутой девайс: двигатель на невероятностной тяге, денейрализатор, транклюкатор, Garden of Eden Creation Kit и т.д.
В Adobe Flash тоже «чудесная» отмена при сборке флешки. Задание уходит к фоновой программе, окно с прогрессом подвисает до тех пор, пока флешка не соберётся, случайно запущенную сборку (а один проект собирается около 30 секунд) не прервать.
Опять приходим к управлению ожиданиями, фундаментальной основе взаимодействия.
Для каждой кнопки «Отмена» есть набор действий, которые должны произойти при ее нажатии.
Причем фактический набор действий и ожидания пользователя (каждого конкретного) могут очень сильно различаться, и вероятность этого достаточно велика. Причем эта вероятность пропорционально увеличивается в зависимости от бизнес-логики (Mvc) и ее проекции на монитор (mVC).
Короче, забейте на кнопку «Отмена», не путайте себя и пользователей.
а меня больше всего убивает, когда жмешь отмену и все подвисает минуты на две-три, а ты сидишь и думаешь, отменится процесс или нет, а может все уже закочилось бы, если бы я не тыкал кнопочки всякие.
В этом плане люто бешено бесит кнопка «Назад» на андроидном телефоне, которая иногда что-то отменяет, иногда просто показывает прошлый экран, не отменив действия, а иногда и вовсе отправляет приложение в фон, оставив работать дальше.
Особенно весело случайно нажать на контакт и начинать звонок. В этот момент всегда срабатывает рефлекс «Останови, это, мать твою!» и палец интуитивно нажимает на «Назад», тем самым вместо остановки отправляя звонилку в фон, скрывая её интерфейс и последний шанс остановить звонок, который продолжается, но теперь уже без кнопок отмены.
Знаете, с другой стороны меня неоднократно выводили из себя всякие не всегда особо нужные установки/проверки/конфигурации, которые задумывались на неприлично долгое время при всяком отсутствии какой-либо кнопки вообще. Уж лучше сделать кнопку «пох**, отменить», чем заставлять пользователя снимать сильно засидевшийся процесс.
Так что сначала, наверное, лучше ещё раз убедиться, что программа не залипнет из-за какой-то фигни на долгое или бесконечное время, а потом уже думать над тем, оставлять ли кнопку отмены.
Было время, когда писали приложения в MS-DOS (никак не могу вытравить из вамяти этот кошмар), но писали уже классами. Писали большую хрень на подобие теперешней 1-С бухгалтерии. Куча связанных файлов БД и т.д. Впервые столкнулся с тем, что базы рушатся из-за нетерпеливости пользователя. Бухгалтерша запускала расчёт годового балланся, а через 5 минут (ждать нужно было около часа при 386-SX) начинала судорожно тыкать карандашиком в Reset, что приводило к потерянным кластерам на винте.
1 шаг — застукал её с поличным (до этого — «Я ничего не знаю!»)
2 шаг — сделал ей какую-никакую анимацию (что-то типа вращающегося слэша-звёздочки) — НЕ ПОМОГЛО…
3 шаг — придумал ей кнопку <Отмена> — и тут началось (базы перестали сыпаться, но «Оно ничего не считает»)
4 шаг — покрасил <Отмена> БелымПоКрасному и над кнопочкой поместил текст (по-русски) о последствиях (по сути — Undo )
5 шаг — пришлось купить 2 бутылки водки и пить с ней до тех пор, пока не выяснилось, что «Если компьютер такой умный, так что же он ТАК ДОЛГО? Я ведь думала, что он ОПЯТЬ ЗАВИС»
6 шаг — задержался в командировке (такие ипеня, омг...) с целью внедрения в МОЗГИ бухгалтеров РЕАЛЬНОЙ информации вместо абстрактной веры в УМНОСТЬ компьютеров…
Дело пошло !)
Вы действительно хотите использовать кнопку отмены в ваших приложениях?