Проверка “Даты рождения”: Как далеко/очень Вы пошли бы?

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

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

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

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

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

14
задан 4 revs, 2 users 64% 19 October 2009 в 06:07
поделиться

17 ответов

Подумайте, сколько раз вы заполняли формы. Сколько раз вы расстраивались из-за того, что какой-то «слишком умный» программист вставлял некую «проверку», которая просто случайно не соответствовала вашим обстоятельствам? Я говорю: доверяйте пользователю. Если подумать, со временем, я думаю, люди живут дольше и в любом случае попадают в сеть в более раннем возрасте. : P

18
ответ дан 1 December 2019 в 05:55
поделиться

будучи перфекционистом, я бы пошел сюда за 150: D

как ни малейшие шансы, люди уже прошли 120, и кто знает, что произойдет в ближайшие 30 лет: D

Однако я не считаю это таким важным ..

0
ответ дан 1 December 2019 в 05:55
поделиться

Все зависит от приложения. Бизнес-приложение для обработки заказов сильно отличается от отслеживания исторических или будущих данных.

Можно согласиться, что это должна быть действительная дата, но учтите, что существует несколько календарей (например, номер месяца может быть 13, год может быть больше 5000).

0
ответ дан 1 December 2019 в 05:55
поделиться

Давайте везде будем использовать двузначные годы. После 1999 года никто не будет использовать наше программное обеспечение!

1
ответ дан 1 December 2019 в 05:55
поделиться

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

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

Если вы беспокоитесь о «непонятливости». или вводимые ботами, затем используйте Captcha. Сказав все это, я считаю, что вы в безопасности с используемыми вами правилами проверки.

1
ответ дан 1 December 2019 в 05:55
поделиться

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

В общем, размышляя об этом, вот мои два цента

1) Отказ от юмора. То, что вам сейчас смешно, никому не будет. Более того, то, что смешно после двух или трех ходов, не смешно после 25 или 30 - это просто утомительно, даже если вы имеете дело с анекдотами! 2) Я прихожу к мысли, что, если вы не можете окончательно подтвердить что-то как явное неправильное, например, вы не хотите, чтобы кто-то вводил значение <0, тогда вам следует подумать о предупреждении, а не о предотвращении с помощью диалогов или чего-то еще.

Эй, что я знаю? Через неделю я передумал (я бизнес-аналитик) и буду требовать немедленных ответов от разработчиков; ->

1
ответ дан 1 December 2019 в 05:55
поделиться

Проверять на целое число и быть полезным; Я думаю, что все остальное: оскорбительная / старшая / чрезмерно изощренная система - плохая идея.

Людям должно быть позволено лгать на этих формах, если они хотят; это не закон, это веб-сайт.

Не воспринимайте это так серьезно.

0
ответ дан 1 December 2019 в 05:55
поделиться

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

4
ответ дан 1 December 2019 в 05:55
поделиться

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

Таким образом, любая дата рождения, не прошедшая вышеуказанные тесты, отклоняется с сообщением на уровне поля, например «Эта дата находится в будущем / слишком далеко в прошлом. Пожалуйста, введите свою дату рождения».

Любая другая дата рождения действительна (возможно, пользователю действительно 11 или 108 лет). Но общая форма может быть отклонена бизнес-правилами. Например, «Вам должно быть не менее 18 лет, чтобы подавать заявку»

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

5
ответ дан 1 December 2019 в 05:55
поделиться

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

Так что для вашего приложения может быть что-то вроде этого:

  • Age
  • Возраст> общепринятый возраст выхода на пенсию - предупреждение
  • Возраст> ожидаемая продолжительность жизни - ошибка
12
ответ дан 1 December 2019 в 05:55
поделиться

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

В частности, меня всегда беспокоит логический порядок вещей. Если кто-то говорит, что они родились в 1802 году, это нормально (вроде как), я просто хочу, чтобы дата их окончания была больше даты их рождения. Но вы сталкиваетесь с небольшими неприятными проблемами, когда дело касается времени (например, часов и минут), например, если пользователь выбирает 8:30 в качестве времени начала, а затем выбирает 9:15 в качестве времени окончания, но затем понимает, что время окончания было 8:45. Они решили изменить 9 на 8 с намерением изменить минуты на: 45. Но мой сценарий проверки слишком занят, говоря: «Эй, погоди! 8:15 до 8:30, хорошая попытка!» Но я могу' Я рискую позволить им оставить все неправильно и т. д.

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

Если возраст ниже установленного законом трудоспособного возраста (16 в большинстве частей США), даже не предлагайте ничего выше этого года в качестве варианта (если вы используете drop вниз).

Если возраст превышает разумный трудоспособный возраст (который может быть деликатным вопросом), предложите наивысшее значение, основанное на пенсионном возрасте, и просто добавьте «>» перед этим годом. Если кому-то 75 лет и он подает заявку на должность администратора, им будет больше приятно, что вы сделали все просто, а не обидно, что вы не указали год их рождения. Во всяком случае, они будут впечатлены (я думаю), что вы пошли этим путем, а не совсем ничего, подразумевая, что им не следует тратить свое время.

В конце концов, у вас есть простой выпадающий список, который очень легко написать скриптом (пример PHP):

$currentYear = date('Y');

    echo "<select name=\"YearOfBirth\">";

for($i = 16; $i <= 64; $i++) {
    $optionYear = $currentYear - $i;
    echo "<option value=\"$optionYear\">$optionYear</option>";
    }

    $greaterYear = $currentYear - 65;
    echo "<option value=\"&gt;$greaterYear\">&gt;$greaterYear</option>";

    echo "</select>";
7
ответ дан 1 December 2019 в 05:55
поделиться

Проверка и правильность
Точка проверки входных данных состоит в том, чтобы убедиться, что все элементы находятся в разрешенном и ожидаемом диапазоне при дальнейшей обработке, т.е. если ваша база данных гарантирует все заявители в БД - 18 лет и старше, подтвердите это. Если ваша база данных также принимает школьников, подавших заявления на стажировку, не делайте этого.

Все необычное - всего лишь предупреждение. Да, значение 120 лет - это безумие, вы должны предупредить пользователя и, возможно, пометить эту запись как подозрительную / для проверки. Однако нет смысла отклонять его (если у вас нет бизнес-правила, согласно которому, например, все кандидаты моложе 70 лет).

Поддельное доверие
Представьте, что произойдет, если вы скажете одному пользователю, что «вы исключаете маловероятные DOB в ввод ». Она может сказать своему коллеге, что DOB «уже подтвержден». В итоге он безосновательно верит, что заявителю 90 лет, и если бы это была подделка, вы бы ее отклонили.

Вся дальнейшая обработка - человеком или компьютером - все равно должна предполагать, что DOB может быть неверным - только из-за опечатка. Вы пытаетесь создать гарантию, которую на самом деле не можете дать. Многие пользователи доверяют компьютеру, которым пользуются каждый день больше, чем незнакомцу, вы пытаетесь навязать это доверие - что является ошибкой ИМО.

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

(Это, вероятно, помещает меня в серьезную категорию вашего клиента, но это мой способ быть »

10
ответ дан 1 December 2019 в 05:55
поделиться

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

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

2
ответ дан 1 December 2019 в 05:55
поделиться

Действительная дата:

Я перейду к расширению проверки, существует ли эта дата или нет. т.е. високосный год 29 февраля и так далее.

Дата в будущем:

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

Дата старше 120 лет. лет или нет:

Проверять не буду. 200 лет было бы более безопасным пределом? (на случай, если 121-летний мужчина захочет использовать компьютер * хихикает * )

2
ответ дан 1 December 2019 в 05:55
поделиться

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

И определенно не выдвигать никаких дерзких исключений / сообщений. Ваше сообщение должно помочь пользователю в распознавании ошибки и восстановлении после нее.

Надеюсь, что это поможет.

0
ответ дан 1 December 2019 в 05:55
поделиться

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

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

2
ответ дан 1 December 2019 в 05:55
поделиться

Ниже приведены проверки, которые вы можете выполнять при проверке DOB:

рассчитайте возраст на основе DOB и выполните следующие проверки

ВОЗРАСТ> XX [XX - минимальный возраст, необходимый для подачи заявления]

ВОЗРАСТ

ВОЗРАСТ = XX

Если нет верхнего предела возраста, тогда мы можем принять это как пенсионный возраст, иначе сверить с верхним пределом для следующих двух проверок

ВОЗРАСТ <Пенсионный возраст

ВОЗРАСТ>

0
ответ дан 1 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: