Об интерфейсах
Как обычно я подметил очередной прикол в Mac OS X. Здесь их вообще много, постоянно узнаешь что-то новое и приятное.
Не очень давно я читал статью посвященную кнопкам "Отмена". Суть в том, что не все реализации этой функции действительно отменяют действие, и не всегда на том моменте, на котором тебе нужно. Если программа подвисла, и ты решил нажать отмену - в 99% случаях это ни к чему не приведёт. Таковы издержки мульти-поточности приложений. Так что порой лучше сказать пользователю, что это действие отменить нельзя. Еще там много нюансов с откатом действия и т.д. и т.п.
Так вот! Приблизительно из той же оперы тему я заметил только что на маке. Простое диалоговое окошко, которое говорит, что в данный момент виртуальный диск подвис и система не может сделать Eject. Это окошко предлагало два варианта - Cancel и Force Eject. Не знаю, что сделает Отмена, но Force Eject всегда срабатывает, и диск отключается без всяких проблем.
Я уверен, что большинство разработчиков не обратили бы свое внимание на то, что может произойти, если во время «простоя» этого диалогового окна диск все-таки развиснет и отключится. Допустим, что диск отключился, и после этого пользователь нажимает Force Eject. Какое ожидать поведение? Ошибку? Мне понравилась реализация этой ситуации - если во время показа диалогового окна диск отключается, поверх этого окна вылазит еще одно окошко, которое говорит что-то типа «А чувак, все, забей! Диск уже отключился, так что можешь не парится.» ну и кнопочка типа «Ок» рядом.
В таком случае реализован очень "общительный", на мой взгляд, я бы даже сказал «дружелюбный» пользовательский интерфейс. Он отслеживает поведение системы во времени, и контролирует ситуацию сам, если наступает момент, когда пользователю уже не нужно вмешиваться. Однако реализация таких чудес требует серьезных временных и денежных затрат.