Слід враховувати кілька факторів. Щоб проілюструвати ці моменти, я використаю приклад поля, де користувач повинен ввести відсоток у контексті квоти, визначеної для конкретної задачі, з точки зору обсягу дискового простору, яке може використовувати ця задача. 0% означає, що завдання не зможе нічого написати на диск; На 100% означає, що завдання може заповнити весь диск на диску. Значення між ними означають, що вони означають.
Як розробник, ви, мабуть, вважаєте, що прийнятні значення [0, 1, 2, 3, ⋯ 99, 100], а все інше нерозумно. Давайте розберемося, чому користувачі все-таки можуть вводити ці «дурні» значення.
Друкарські помилки
%^
Користувач вводив значення 56, але помилково натискав Shiftпід час введення їх (наприклад, тому, що на французькій клавіатурі потрібно натиснути, Shiftщоб ввести цифри, і користувач постійно перемикався між французькою клавіатурою та QWERTY).
Таким же чином ви можете отримати номер із чимось після або перед ним, або між ними:
56q
Тут користувач, ймовірно, вводив цифри, після чого йшла вкладка для переходу до наступного поля. Замість натискання ⇆ користувач натискав на сусідню клавішу.
Нерозуміння та неправильні тлумачення
Порожній вклад, мабуть, є найбільш звичайним. Користувач уявляв, що поле є необов’язковим, або не знав, що його ввести.
56.5
Користувач вважав, що значення з плаваючою комою є прийнятними. Або користувач помиляється, і програма повинна ввічливо пояснити, чому приймаються тільки цілі значення, або початкові вимоги були неправильними, і має сенс дозволити користувачам вводити значення з плаваючою комою.
none
Користувач неправильно зрозумів, що запитуючи простір, який може займати завдання, додаток очікує числа. Це може вказувати на поганий інтерфейс користувача. Наприклад, запитуючи користувача "Скільки місця на диску має займати завдання?", Запрошує на такий тип введення, тоді як поле зі знаком відсотка, яке слід, отримає менше такого типу введення, оскільки "жоден%" не робить багато сенсу.
150
Користувач неправильно зрозумів, що означає відсоток у цьому випадку. Можливо, користувач хотів сказати, що завдання може зайняти 150% використовуваного в даний час місця, тому якщо на диску в 2 ТБ використовується 100 ГБ, то завдання може використовувати 150 ГБ. Знову ж, кращий користувальницький інтерфейс може допомогти. Наприклад, замість того, щоб до нього було додано оголене поле для введення зі знаком відсотка, може бути таке:
[____] % of disk space (2 TB)
Коли користувач почне вводити текст, він змінить текст на льоту, щоб він став таким:
[5___] % of disk space (102.4 GB of 2 TB)
Представництва
Великі числа чи числа з плаваючою точкою можуть бути представлені по-різному. Наприклад, число 1234,56 може бути записано так: 1,234.56
. Залежно від культури, текстове подання тієї ж кількості відрізнялося б. У французькому ж номер буде записаний у такий спосіб: 1 234,56
. Дивіться, кома, де ви її не очікували, і пробіл.
Завжди очікуючи певного формату з використанням певної локалі, рано чи пізно ви потрапите в проблеми, оскільки користувачі з різних країн мають різні звички писати цифри, дати та час тощо.
Люди проти комп'ютерів
Twenty-four
Звичайні люди не думають так само, як комп'ютери. "Двадцять чотири" - це фактичне число, незалежно від того, що б сказав вам ПК.
Хоча (1) більшість систем взагалі не обробляє цей тип введення і (2) майже кожен користувач не уявляє собі введення числа, написаного повними літерами, це не означає, що таке введення нерозумно. В About Face 3 , Алан Купер робить справу , що не виконує жодних такі матеріали, свідчить про нездатність комп'ютерів адаптуватися до людей, і в ідеалі інтерфейс повинен вміти правильно обробляти ці входи.
Єдине, що я маю додати до книги Алана Купера, - це те, що у багатьох випадках цифри записуються цифрами помилково . Прикро вражає той факт, що комп'ютери очікують, що їхні користувачі помиляться (і не терплять користувача, який пише правильно).
Unicode
5𝟨
Unicode зберігає свої сюрпризи: символи, які можуть виглядати однаково, не однакові. Не переконані? Скопіюйте та вставте "5𝟨" === "56"
інструменти для розробників свого веб-переглядача та натисніть Enter.
Причина того, що ці рядки не рівні, полягає в тому, що символ Unicode 𝟨
не є таким же, як символ 6
. Це створило б ситуацію, коли розлючений клієнт зателефонував би, повідомивши, що ваш додаток не працює, надавши скріншот вводу, який виглядає законним, а ваш додаток стверджує, що введення недійсне.
Чому б хто-небудь вводив символ Unicode, схожий на цифру, запитаєте ви? Хоча я не очікував, що користувач може ненавмисно ввести його, копія-вставка з іншого джерела могла спричинити це, і у мене був випадок, коли користувач насправді робив таку копію-вставку рядка, яка містила символ Unicode, який би не з'являються на екрані.
Висновок
Це випадки, які ви отримуєте для поля введення елементарного числа. Я б дозволю вам уявити, з чим ви можете зіткнутися для більш складних форм, таких як дата чи адреса.
Моя відповідь зосереджена на тому, що ви назвали "дурним" введенням. Тестування - не про перевірку щасливих шляхів; справа також у тому, щоб перевірити, чи ваша програма не працює, коли зловмисник навмисно вводить дивні речі, намагаючись її зламати. Це означає, що коли ви запитуєте відсоток, вам також доведеться перевірити, що відбувається, коли користувач відповідає на рядок, що містить 1 000 000 символів, або від'ємне число, або таблицю бобі .