stringtranslate.com

Принцип наименьшего удивления

В проектировании пользовательского интерфейса и программного обеспечения [1] принцип наименьшего удивления ( POLA ), также известный как принцип наименьшего удивления , [a] предполагает, что компонент системы должен вести себя так, как ожидает от него большинство пользователей. вести себя и, следовательно, не удивлять и не удивлять пользователей. Следующее является следствием этого принципа: «Если необходимая функция имеет высокий фактор удивления, может потребоваться ее перепроектирование». [4]

Этот принцип используется в отношении взаимодействия с компьютером, по крайней мере, с 1970-х годов. [5] Хотя этот принцип впервые был формализован в области компьютерных технологий, он может широко применяться и в других областях. Например, в письменном виде перекрестная ссылка на другую часть работы или гиперссылка должна быть сформулирована так, чтобы точно сообщать читателю, чего ожидать.

Источник

Первая ссылка на «Закон наименьшего удивления» появилась в бюллетене PL/I в 1967 году (PL/I — язык программирования, выпущенный IBM в 1966 году). [6] К концу 1960-х годов PL/I стал печально известен нарушением закона, [7] например, потому, что из-за правил точного преобразования PL/I, [8] выражение 1/3 + 25привело к 5,33333333333, а не к ожидаемому 25,33333333333. [9] [10] Полностью закон появился в 1972 году: [11]

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

Формулировка

Хрестоматийная формулировка такова : «Люди — часть системы. Дизайн должен соответствовать опыту, ожиданиям и ментальным моделям пользователя ». [12]

Этот принцип направлен на использование существующих знаний пользователей для минимизации кривой обучения , например, путем разработки интерфейсов, которые в значительной степени заимствованы из «функционально подобных или аналогичных программ, с которыми ваши пользователи, вероятно, знакомы». [2] Ожидания пользователей в этом отношении могут быть тесно связаны с конкретной вычислительной платформой или традицией . Например, ожидается, что программы командной строки Unix будут следовать определенным соглашениям в отношении переключателей [2] , а виджеты программ Microsoft Windows должны следовать определенным соглашениям в отношении сочетаний клавиш . [13] В более абстрактных настройках, таких как API , еще одним примером является ожидание того, что имена функций или методов интуитивно соответствуют их поведению. [14] Эта практика также предполагает применение разумных значений по умолчанию . [4]

Когда два элемента интерфейса конфликтуют или неоднозначны, поведение должно быть таким, которое меньше всего удивит пользователя ; в частности, программисту следует попытаться придумать поведение, которое меньше всего удивит того, кто использует программу, а не то поведение, которое является естественным, зная внутреннюю работу программы. [4]

Выбор «наименее удивительного» поведения может зависеть от ожидаемой аудитории (например, конечных пользователей , программистов или системных администраторов ). [2]

Примеры

Веб-сайты, предлагающие сочетания клавиш, часто позволяют нажать ?, чтобы просмотреть доступные сочетания клавиш. Примеры включают Gmail , [15] YouTube , [16] и Jira . [17]

В операционных системах Windows и некоторых средах рабочего стола для Linux функциональная клавиша обычно открывает справочную программу для приложения . Аналогичное сочетание клавиш в macOS — + + . Пользователи ожидают появления окна справки или контекстного меню при нажатии обычных клавиш быстрого доступа к справке. Программное обеспечение, которое вместо этого использует этот ярлык для другой функции, скорее всего, вызовет удивление, если не появится помощь. [18]F1 Command⇧ Shift/

Стандартная библиотека языка программирования обычно предоставляет функцию, аналогичную псевдокоду , которая создает машиночитаемое целое число из строки человекочитаемых цифр . Обычно система счисления по умолчанию равна 10, что означает, что строка интерпретируется как десятичная (основание 10). Эта функция обычно поддерживает другие системы счисления, например двоичную (базовая 2) и восьмеричную (базовую 8), но только если они указаны явно. В отличие от этого соглашения, в JavaScript изначально по умолчанию использовалось основание 8 для строк, начинающихся с «0», что приводило к путанице разработчиков и ошибкам программного обеспечения . [19] Это не поощрялось в ECMAScript 3 и было исключено в ECMAScript 5. [20] ParseInteger(string, radix)

Некоторые сообщества разработчиков, такие как FreeBSD [21], используют POLA как одно из руководящих принципов того, что делает пользовательский опыт неудивительным.

Смотрите также

Примечания

  1. ^ Альтернативно закон наименьшего сюрприза или правило наименьшего сюрприза . [2] [3]

Рекомендации

  1. ^ Зеебах, Питер (1 августа 2001 г.). «Принцип наименьшего удивления». Капризный пользователь . IBM DeveloperWorks . Проверено 23 января 2014 г.
  2. ^ abcd Раймонд, Эрик Стивен (2003). «Применение правила наименьшего сюрприза». Искусство программирования для Unix. faqs.org. п. 20. ISBN 978-0-13-142901-7. Проверено 23 августа 2020 г.
  3. ^ Джеймс, Джеффри (1987). Дао программирования. 4.1. ISBN 0-931137-07-1. Проверено 5 февраля 2014 г.
  4. ^ abc Коулишоу, МФ (1984). «Дизайн языка REXX» (PDF) . IBM Systems Journal . 23 (4): 333. дои :10.1147/sj.234.0326 . Проверено 23 января 2014 г. Может ли новая функция вызывать сильное удивление? Если функция случайно применяется пользователем неправильно и приводит к непредсказуемому результату, эта функция имеет высокий фактор удивления и, следовательно, нежелательна. Если необходимая функция имеет высокий коэффициент удивления, может потребоваться ее перепроектирование.
  5. ^ «Приоритет пакета по умолчанию — опрос пользователей» . Информационный бюллетень Вычислительного центра . Мичиган: Мичиганский университет. 5 апреля 1978 г. Проверено 25 августа 2020 г.
  6. ^ Саутворт, Р.Н. (декабрь 1967 г.). Саутворт, Р.Н. (ред.). «Предложение по псевдоимени PL/I». Уведомления ACM SIGPLAN (бюллетень PL/I № 5 изд.). 2 (12): 6. дои : 10.1145/1139502.1139504. ISSN  0362-1340. S2CID  12180929.
  7. Дата, CJ (11 февраля 2022 г.). Мечтания о базе данных, том I: Переработанные и возрожденные сочинения о реляционных материалах. Технические публикации. Глава 2, ссылка 36. ISBN. 978-1-63462-984-3. Как однажды заметил мне мой друг (это, должно быть, где-то в конце 1960-х годов), что бы вы ни говорили об этом, есть одна вещь, которой PL/I совершенно точно не является, и это «язык наименьшего удивления».
  8. ^ Трамбле, Жан-Поль; Соренсон, Пол Г. (1985). Теория и практика написания компиляторов . Нью-Йорк: МакГроу-Хилл. ISBN 9780070651616. PL/I здесь является главным плохим примером; он усыпан конструкциями, которые не делают то, что думает программист, как показано на примере ФИКСИРОВАННОГО разделения.
  9. ^ Бэррон, Дэвид Уильям (1968). Сравнительные языки программирования . Американский Эльзевир, Нью-Йорк.
  10. ^ Стэнсифер, Райан Д. (1995). Изучение языков программирования . Энглвуд Клиффс, Нью-Джерси: Прентис Холл. п. 123. ИСБН 978-0-13-726936-5.
  11. ^ Бержерон, РД; Ганнон, доктор юридических наук; Шектер, ДП; Томпа, ФРВ; Дам, А. Ван (1972). «Языки системного программирования». Достижения в области компьютеров . 12 : 175–284. дои : 10.1016/s0065-2458(08)60510-0. ISBN 9780120121120.
  12. ^ Зальцер, Дж. Х.; Каашук, Франс (2009). Принципы проектирования компьютерных систем: введение. Морган Кауфманн. п. 85. ИСБН 978-0-12-374957-4.
  13. ^ Петруцсос, Евангелос (2010). Освоение Microsoft Visual Basic 2010. Wiley. п. 133. ИСБН 978-0-470-53287-4.
  14. ^ Блох, Джошуа (2006). «Как разработать хороший API и почему это важно». Продолжение OOPSLA '06. Сопровождение 21-го симпозиума ACM SIGPLAN по системам, языкам и приложениям объектно-ориентированного программирования . Ассоциация вычислительной техники. стр. 506–7. дои : 10.1145/1176617.1176622. ISBN 1-59593-491-Х. S2CID  27230400.
  15. ^ Вивиан (21 июня 2013 г.). «Сочетания клавиш для Gmail». Гугл Инк . Проверено 27 июля 2013 г.
  16. ^ «Сочетания клавиш для YouTube — Справка YouTube» . support.google.com . Проверено 16 августа 2022 г.
  17. ^ «Использование сочетаний клавиш». Атласиан . Проверено 27 июля 2013 г.
  18. ^ Кейзер, Г. (1 марта 2010 г.). «Microsoft: не нажимайте клавишу F1 в Windows XP». Компьютерный мир . Проверено 10 ноября 2019 г.
  19. ^ «Почему система счисления для parseInt JavaScript по умолчанию равна 8?». Переполнение стека . 8 апреля 2011 г.
  20. ^ «parseInt()», Mozilla Developer Network (MDN) . Если входная строка начинается с «0» (ноль), предполагается, что система счисления равна 8 (восьмеричному) или 10 (десятичному). Выбор именно системы счисления зависит от реализации. ECMAScript 5 поясняет, что следует использовать 10 (десятичное число), но пока не все браузеры поддерживают это.
  21. ^ «Часто задаваемые вопросы по FreeBSD 2.X, 3.X и 4.X» . FreeBSD. 11 июня 2002 г. Проверено 15 февраля 2023 г.

Внешние ссылки