![Автор: А.Ш. Автор: А.Ш.](https://habrastorage.org/getpro/habr/upload_files/131/463/d89/131463d89a867f241086cea4daad1fb5.png)
1 совет. Встроенная проверка ошибок
Отображение совершенной пользователем ошибки при заполнении формы, идеально вкладывается на самом первом этапе, а не после, тк это заставляет людей выполнять дополнительную работу и создает для них когнитивную нагрузку. В результате чего, заполнение формы может занять куда больше времени, тк пользователь попадает в луп действий, которые постоянно его откатывают назад.
Думаю у всех было такое, когда ты заполнил огроменную форму, нажал кнопку отправить, и получил потрясающий заряд бешенности на весь день.
а. Показывай встроенную проверку для input'a. Ошибку, показанную в контексте (например справа) можно легко и мгновенно исправить:
![а. Встроенная проверка а. Встроенная проверка](https://habrastorage.org/getpro/habr/upload_files/d6e/763/550/d6e763550d4f7ad8b075cf32681264b7.png)
b. Обрати внимание на чеклист для создания (если необходимо) сложного пароля. Например, хорошо его сделать интерактивным. В момент, когда ты заполняешь поле – галочки автоматически проставляются. Они как бы сигнализируют о том, что ты все сделал правильно, проводя тебя по этому увлекательному маршруту:
![b. Чек-лист b. Чек-лист](https://habrastorage.org/getpro/habr/upload_files/973/f77/7ab/973f777ab1f6ccff8a7dae16741caa88.png)
2 совет. Поля ввода или input
a. Не забывай про лейблы. Проектируя поля ввода не оставляй пользователя без подсказки, в момент когда он уже ввел данные в input. Обязательно оставь возможность пользователю вернуться и не забыть с каким полем он работал:
![а. Поля ввода или Input а. Поля ввода или Input](https://habrastorage.org/getpro/habr/upload_files/ca8/b86/329/ca8b86329116779f7bf97fa1d7831b01.png)
b. Добавь возможность быстро стереть данные. Например, если пользователь ошибся, а введено уж больно большое количество символов:
![b. Быстрое удаление b. Быстрое удаление](https://habrastorage.org/getpro/habr/upload_files/276/d54/431/276d544314e813b21244084222a219bd.png)
с. Автоматический переход к следующему полю ввода когда пользователь ввел необходимое количество символов:
![с. Автоматический переход с. Автоматический переход](https://habrastorage.org/getpro/habr/upload_files/e59/952/a98/e59952a985cab7fda6f9c181c5b16650.png)
3 совет. Состояние системы
Для правильной коммуникации с пользователем, система всегда должна сообщать свое текущее состояние. Обрати внимание на свои электронные часы, они ведь показывают уведомления, и какое количество заряда осталось, а указатели в метро сообщают на какой станции ты находишься, мессенджеры сигнализируют сколько непрочитанных сообщений и так далее.
Что ж, всякий раз при взаимодействии с твоим продуктом, пользователь ожидает узнать было-ли действие успешным, ну или просто узнать, было ли оно вообще. Информирование пользователей о текущем статусе позволяет им идти в правильном направлении не затрачивая своих усилий, где интерфейс как бы несет это бремя на себе, освобождая пару килобайт памяти в голове пользователя на более приятные вещи.
а. Изменение цвета кнопки при нажатии, или индикатор загрузки определенного процесса:
![а. Состояния кнопок а. Состояния кнопок](https://habrastorage.org/getpro/habr/upload_files/f13/90e/c78/f1390ec781b1d5531b2b10ed6b7527de.png)
b. Голосовые интерфейсы отображают анимационное кольцо, показывая, что они слушают пользователя:
![b. Голосовые интерфейсы b. Голосовые интерфейсы](https://habrastorage.org/getpro/habr/upload_files/eff/4c0/15d/eff4c015d8860e55b22b62462e79fc1e.png)
с. Если товар закончился, электронная коммерция уведомляет пользователя об его отсутствии, тем самым избавляя клиента от потери времени, а также останавливая рост недоверия к сервису:
![с. Электронная коммерция с. Электронная коммерция](https://habrastorage.org/getpro/habr/upload_files/fda/eed/f05/fdaeedf05a7a36269f39a04df9f7a23d.png)
d. Товары, которые были ранее добавлены в избранное не исчезают без согласия пользователя, а остаются с особой пометкой (например: Нет в наличии). Поэтому хорошо бы добавить уведомление о том, что произошли некоторые изменения в разделе избранное:
![d. Товары d. Товары](https://habrastorage.org/getpro/habr/upload_files/aed/7f8/6b1/aed7f86b14069039bc33757b3edd8879.png)
е. В сервисах оплаты могут возникнуть определенные ограничения.
Поэтому нужно заранее демонстрировать пользователю то, что сервис не поддерживает какой-либо вид оплаты. Не скрывай от пользователя информацию! Эта небрежность очень сильно ощущается при малейшем взаимодействии с таким сервисом, что даже не нужно проводить исследований. Для того, чтобы пользователю не пришлось делать лишних действий или испытывать гнев по поводу потраченного времени впустую – будь с ним открытым:
![е. Предупреждение е. Предупреждение](https://habrastorage.org/getpro/habr/upload_files/58f/011/ba7/58f011ba723629ca903dca03946fab96.png)
4 совет. Раскрывающие списки в цифровых значениях и датах
Давай определим какой тип дат показывать при различном контексте.
а. Представим, что нам необходимо заполнить дату своего дня рождения и для нас открывается нарядный календарь. Это очень неудачное решение, т.к. такой тип даты уже заранее известен, и мы не планируем ее, ведь наш день рождения это совсем другой тип данных, это определенно строка, как серия и номер паспорта, или номер телефона. Наша задача дать пользователю поделиться воспоминанием, а не дать ему поиграть в еще один интерфейс:
![а. Одинаковая вероятность дат а. Одинаковая вероятность дат](https://habrastorage.org/getpro/habr/upload_files/0a2/1a0/0dc/0a21a00dc2b1e37e81eb74f58ef3f53c.png)
b. Выбирая дату встречи или планируя свою поездку, лучше использовать раскрывающийся календарь. Это вот как раз тип даты, которая заранее неизвестна ни нам, ни (часто бывает) пользователю. Демонстрируя пользователю календарные дни, он понимает в какой день недели, месяц, год он сможет подобрать билет, оформить заселение и т.д.:
![b. Выбор – будущие даты b. Выбор – будущие даты](https://habrastorage.org/getpro/habr/upload_files/1a6/e12/a02/1a6e12a0216130e558cdf35d37157355.png)
с. Выбирая значение от 1 до 15, возможно ты соблазнишься использовать раскрывающийся список, но лучше бы сделать заполнение данных быстрым и простым используя stepper:
![с. Stepper с. Stepper](https://habrastorage.org/getpro/habr/upload_files/251/78a/b05/25178ab05f1eb0a71e3b38a2e7e99fc2.png)
d. Если твой список из чисел довольно внушительный, например это ценовой диапазон от 1 000 до 90 000 - используй button range:
![d. Range Button d. Range Button](https://habrastorage.org/getpro/habr/upload_files/f72/065/085/f7206508508932c8ad1e73f48a3c95ff.png)
На этом все! Я надеюсь тебе было полезно освежить это в своей памяти (или же изучить), а я вернусь к теме более продвинутых советов немного позже. Пока 👀