Каким образом должно быть прощение? - PullRequest
9 голосов
/ 11 июля 2010

Я зашел на сайт моего банка на днях и ввел номер своего счета через пробел.Появилось сообщение об ошибке «Номер счета должен состоять только из числовых значений».Я подумал про себя: «Серьезно ?! Ты не мог просто лишить меня места?».Если бы я не был компьютерным фанатом, я бы даже подумал: «Что? Там есть только числа!»(не в состоянии видеть пространство).

Калькулятор, который поставляется с Ubuntu, с другой стороны, весело принимает пробелы и запятые, но, как ни странно, не любит конечные точки (без каких-либо последующих цифр).

Итак, возникает вопрос.Каким образом должны быть прощающие веб-формы?Я не думаю, что обрезка пробелов - это слишком много, но как насчет других целочисленных полей?

  • Должны ли они разрешать знаки +/-?
  • Сколько пробелов должно быть разрешено междузнак и число?
  • А как насчет запятых для разделителей тысяч?
  • Как насчет других частей мира, где вместо них используются точки?
  • Что если они находятся между каждыми 4 цифрами вместо каждых 3?
  • А как насчет шестнадцатеричной ивосьмеричные представления?
  • Научная запись?
  • Что если я случайно нажму кнопку цитаты, когда пытаюсь нажать ввод, разве это тоже будет убрано?

Мне было бы очень легко убрать все не-разрядные символы, и это было бы чрезвычайно прощающим, но что, если пользователь допустил реальную ошибку, которая влияет на ввод и должна была быть обнаружена, но сейчас я только что ее исключил?

Как насчет таких вещей, как телефонные номера (которые имеют огромное разнообразие форматов), почтовые индексы, почтовые индексы, номера кредитных карт, имена пользователей, электронные письма, URL-адреса (я должен принять http? Как насчет .com, пока ям на это?)?

Где вы рисуете линию?

Ответы [ 8 ]

7 голосов
/ 11 июля 2010

Для чего-то такого важного, как банковское дело, я не возражаю против того, чтобы он жаловался на мой вклад, особенно если другой вариант по ошибке переводит кучу денег на счет какого-то незнакомца вместо счета моей жены (из-за отсутствующей или неправильной цифры дляпример).

Классическим примером является один из моих банков, который запрещает денежные значения, если у них нет ".99" в конце (где 9, конечно, может быть любой цифрой).Подавляющее большинство вещей, которые я делаю, это для точных долларовых сумм, и немного раздражает необходимость всегда вводить 500,00 вместо всего лишь 500.

Но я буду счастлив от того, что в первый раз буду избегать случайных выплат кому-либо5072 доллара вместо 50,72 только потому, что я забыл десятичную точку.На самом деле, это довольно маловероятно, так как оно также требует подтверждения, и я довольно анальный в контроле своих денег: -)

Сказав это, я в основном следую общему правилу «будь либерален в том, что ты принимаешь,будь строг в том, что ты делаешь ".

Это позволяет другим программам, использующим мой вывод, ожидать ограниченный диапазон возможностей (делая их жизнь проще).Но это делает мое программное обеспечение более полезным, если оно может обрабатывать простые ошибки.

4 голосов
/ 11 июля 2010

Вы рисуете линию в точке, где компьютер угадывает, каким должен быть правильный ввод.

Например, поле ввода лицензионного ключа, которое я написал однажды, принимает пробелы и тире и как верхний, так и нижний регистр, хотя внутри были ключи без указанных пробелов, тире и все были в верхнем регистре.Я мог бы это сделать, так как знал, что ни один из ключей на самом деле не имеет пробелов или тире.

Еще один хороший пример с URL-адресами.Я заметил, что в современных браузерах (я использую Chrome), когда в адресную строку вводится что-то вроде «flowers», он знает, что должен искать его, так как это недопустимый URL.Если вместо этого я набираю 'st', он автоматически исправляет (или автоматически предлагает) 'stackoverflow.com', поскольку это закладка.

Хорошо написанная система ввода будет жаловаться, когда в противном случае она будет вынуждена угадать, каким должен быть правильный ввод.

2 голосов
/ 11 июля 2010

Числовой ввод :
Разбор нецифровых символов мне кажется разумным, но проблема заключается в противоречивой десятичной записи.Некоторые регионы ожидают, что , (запятая) будет обозначать десятичный разделитель, в то время как другие используют . (точка).Если ввод не будет, вероятно, в других базах, я бы предположил только основание 10. Если разумно предположить ввод неосновы 10 (например, base-16 для ввода цвета), я бы использовал стандартные соглашения для обозначения основ:ведущий 0 означает основание 8, ведущий 0x означает основание 16.

Строковый ввод :
Это становится намного сложнее.Это в основном зависит от того, что на самом деле означает ввод.Имя пользователя должно исключать символы, которые будут вызывать проблемы, но значение «вызывает проблемы» будет варьироваться в зависимости от использования приложения и самой системы.URL имеют конкретное определение того, что подпадает под определение, но это определение довольно широкое.К счастью, многие языки поставляются с инструментами для распознавания URL-адресов, без необходимости кодировать собственный синтаксический анализ (независимо от того, хорошо ли язык делает язык или нет - это другой вопрос).основа дела.Мне нравится общее правило paxadiablo : принимайте столько, сколько можете, выводите только то, что должны.

1 голос
/ 11 июля 2010

Где вы рисуете линию?

Когда последствия принятия «недействительных» данных перевешивают раздражение , а не принятия их.

Должны ли они разрешить знаки +/-?

Если отрицательные значения действительны, то, конечно, они должны.

Если нет, то не просто молча удаляет знаки минуса, поскольку это полностью меняет смысл данных. Удаление плюсов - меньше проблем.

Что если [разделители тысяч] находятся между каждыми 4 цифрами вместо каждых 3?

В странах, где используется группировка из трех цифр, «1,0000» можно считать опечаткой. Но это опечатка для «10000» или «1000»? Я не осмелился бы предположить, поскольку неправильное предположение могло бы стоить пользователю 9 000 $.

А как насчет шестнадцатеричной и восьмеричной представления?

Если вы не используете функцию поиска для unicode.org, я не могу представить, почему кто-то использовал бы шестнадцатеричное в веб-форме.

И "01234" почти наверняка будет 1234 вместо 668.

Как насчет таких вещей, как ... номера кредитных карт

Пожалуйста, разрешите пробелы или дефисы в номерах кредитных карт. Это действительно раздражает, когда мне нужно ввести неограниченное число из 16 цифр.

1 голос
/ 11 июля 2010

Это полностью зависит от того, как будут использоваться данные.

Если входные данные представляют собой денежную сумму, например, для транзакции, то введенная переменная должна быть обязательно нормализована до набора стандартов.

Если это просто случай с номером телефона, то вряд ли сохраненные данные обеспечат какой-либо функциональный вид использования, так что вы можете быть более щедрым.

Нет ничего плохого в том, чтобы заставить правильный формат отображать изображение лучше, но вы должны сбалансировать раздражение пользователя с микро преимуществами.

Как только вы начнете собирать данные, вы можете сканировать их и видеть, какие шаблоны появляются, и вы можете автоматически удалить введенный формат.

0 голосов
/ 11 июля 2010

Меня раздражают, как пользователя, номера кредитных карт, обычно они выглядят как группы из 4 цифр с пробелами, разделяющими их, но нечетная веб-форма будет принимать только одну строку цифр без пробелов и без указания того, что это формат это ищет. Точно так же телефонные номера, люди часто используют пробелы, чтобы улучшить ясность, веб-формы иногда принимают пробелы, а иногда нет.

0 голосов
/ 11 июля 2010

Я бы сказал: «Принимать все, но обрабатывать только действительные данные».

Ожидайте, что ваши пользователи будут вести себя как компьютерная нуб.Проверьте входные данные с помощью регулярных выражений и других валидаторов.

Поиск стандартных регулярных выражений для URL-адресов, адресов электронной почты и прочего.

Добавьте регулярное выражение, подобное этому "/ (?: ([-zA-Z0-9] [\ s,] +) ) ([a-zA-Z0-9] +) $ / "для значений, разделенных запятыми или пробелами.При незначительной настройке этот опыт будет работать для любого количества значений, разделенных запятыми.

0 голосов
/ 11 июля 2010

Я думаю, что вы немного отреагировали.Если в поле есть что-то, чего там быть не должно, уберите это.в противном случае попытайтесь принудительно ввести ввод в любом формате, который вам нужен, и, если он не подходит, отклоните его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...